写了一个接口,里面用到了MyBatis的自增配置( useGeneratedKeys
),写好后在使用Test测试时返发现报了错:Duplicate entry '0' for key 'PRIMARY'
,如下图所示:
当时以为是因为之前自己自己手动在数据库表中插入的数据导致表数据中的数据记录条数没有被记录,把原数据删了后再次运行发现确实可以插进去,但是当我再次运行方法时发现又出现了这个问题,看来之前的办法并不对,在网上查了查,发现了是数据库表设计不合理导致的;
因为主键设置不能为空,因此默认是以"0"来进行填充的。因此在数据插入时数据的主键id值被0占据,但由于之前已经有数据了,id为“0”的索引已经被占,在使用就会报这个错误,因此我们只需要对表中的主键“id”设置成自增即可,设置(Navicat)如下:
设置好后再次测试: