Duplicate entry '1559098812383174658' for key 'rc_amt_contributions.PRIMARY'

89 阅读2分钟

“携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情生命无罪,健康万岁,我是laity。

我曾七次鄙视自己的灵魂:

第一次,当它本可进取时,却故作谦卑;

第二次,当它在空虚时,用爱欲来填充;

第三次,在困难和容易之间,它选择了容易;

第四次,它犯了错,却借由别人也会犯错来宽慰自己;

第五次,它自由软弱,却把它认为是生命的坚韧;

第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;

第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。

报错

Duplicate entry '1559098812383174658' for key 'rc_amt_contributions.PRIMARY'

错误原因

1、如果这个时候数据表里面没有数据,而且我们用使用 INSERT INTO VALUES 这样的语句插入,就会提示 Duplicate entry ‘xxx’ for key ‘PRIMARY’ 这类的字样。

2、如果这个时候数据表里面没有数据,而且我们使用 INSERTINTO SELECT FROM 这样的语句插入,并且存储引擎是INNODB的话,就会提示 Failed to read auto-increment value from storage engine 这样的错误.

3、如果这个时候数据表里面有数据,则总是会出现Duplicate entry ‘xxx’ for key ‘PRIMARY’ 这类的字样的错误。

解决方案

数据表中设置了主键(Primary Key),而主键对应的值是不允许重复的。 错误提示为:你插入的记录与数据表中原有记录的主键重复了(Duplicate)。所以插入失败。

在这里插入图片描述

所以,出现Duplicate entry ‘xxx’ for key ‘PRIMARY’ 这个是容易理解的。而另外一个提示是因为INNODB 引擎特有的二级缓存所导致的。数据不会先插入数据表,而会先存到缓存里面,只是增加表里的自增数。所以当自增数达到极限时,InnoDB要获取自增值然后存储到缓存的时候,发现找不到更高的数字了。

个人经验仅供参考哦~