Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘2424‘ for key ‘x.PRIMARY’

很明显,出先这个问题的原因是主键重复,可我的要插入的表里,这个主键设的是自增的,同时这个主键‘2424‘的值也不存在于要插入的表中,于是我试着在表里,将2424手动插入,同样的显示该主键已存在,又试着将主键设大点,还是已存在。

SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_schema="dataBaseName" AND table_name="tableA"; 查询结果是2420,也是正常的。

 

后来想起来,这张要插入的表里,有个触发器,插入的同时会插入到另外一张表里,于是查看另外那张表的自增主键,

查询结果是3800多,而且确实是存在2424这个主键的数据,至此,原因找到,于是就将触发器中在插入另外一张表的时候,主键不用第一张表的主键,而是使用自己的主键,也就是不要使用insert into tableB(id,name) values(new.id,new.name).

要改成insert into tableB (name) values(new.name),并将主键设为自增。改过来后,问题解决了。

总结:mysql如果使用触发器,会将异常抛出在要插入的第一张表里,如果不熟悉的话,可能会在第一张表里花时间找原因,从而忽略了是第二张表的问题。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:返回到login页面时的url为http://localhost:8080/register?userName=%E8%B5%B5%E5%85%AD&identityCode=456795555225452&email=457698826%40qq.com&mobile=1550000&gender=0&loginName=six&password=,这时项目又将数据存储了一遍造成了数据重复。引用\[2\]:Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'x_mu.PRIMARY' 问题:为什么会出现"Duplicate entry '1' for key 'x_mu.PRIMARY'"的错误? 回答: 这个错误是由于数据库中的唯一键约束引起的。在给数据库插入数据时,如果插入的数据与已有数据的唯一键冲突,就会出现这个错误。在你提供的引用中,可以看到在返回到login页面时,项目又将数据存储了一遍,导致了数据的重复。而数据库中的唯一键约束要求每条记录的唯一键值都是唯一的,因此当插入重复的唯一键值时,就会出现"Duplicate entry '1' for key 'x_mu.PRIMARY'"的错误。这个错误提示中的'1'是指重复的唯一键值,'x_mu.PRIMARY'是指唯一键的名称。 #### 引用[.reference_title] - *1* [Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘‘six‘ for keyuser_...](https://blog.csdn.net/m0_52163608/article/details/119719084)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值