MySql插入数据时错误Duplicate entry '131' for key 'PRIMARY'
今天在进行开发的过程中,遇到MySQL数据库插入数据时抛出异常:
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '131' for key 'PRIMARY'
左上角的红色部分是我已经插入正确的数据,这个错误的出现感觉是随机的。
顺便讲一下我这个错误出现的过程:我通过一个循环操作来向数据库中的某张表进行数据的插入,数据层我使用的是MyBatis,我们都知道MyBatis自动生成的xxxMapper.java类中有很多基本的操作数据库的方法,我就是调用了里面的insert方法。然后就出现了上面的异常。
从错误信息中我们可以知道该错误的出现是因为插入数据时主键已经在数据库表中已经存在。但是,我就纳闷了,我MySql数据库中该表的主键设置是自动增长的,难不成没有增长,但是,它又有部分的数据插入成功,这就更让人纳闷了。因此,我通过查找MyBatis的相关资料,找到了解决方案。
解决的方法:找到MyBatis系统自动生成的insert方法。并将红色部分去掉。
因为我们设置的是主键自增长,所以在插入的时候不需要插入主键字段了并且不需要查找主键最大值。