数据库出现Duplicate entry 'xxx' for key 1 解决办法
本帖最后由 灰儿 于 2009-5-18 14:31 编辑在UCenter home发短消息时,提示如下错误信息:
Error: Duplicate entry '2678' for key 1
Errno.: 1062
错误编号:1062
问题分析:
向唯一字段插入相同数据。
是主键设为自增导致的。每插入一条记录时,mysql中的相应表主键自动增长,而在程序中你有设置那个字段的值为i,于是,错误就发生了。
解决方法:
1、请检查程序是否做了修改,如果修改过,建议用我们的原程序覆盖您的修改,再次检查问题。
2、如果您的站点上有 phpMyAdmin ,还可以通过他检查下您的数据库中出错的表的自增字段的当前自增值是否和该表中自增字段的最大值相同,如果相同则会出现该错误。
3、如果您正在转移数据库,请确认数据库的版本是否相同。
4、如果以上方法还未解决,请恢复备份,用 DBCheck 将数据库检验为标准结构,并且重新开始升级。
方法 2 的检查修改详细流程:(以 Discuz! 的 threads 表为例,其他操作均相同)
1)进入您的 phpMyAdmin ,然后在左侧选择您出错的数据库。
http://faq.comsenz.com/attachments/2008/07/11_200807231001321xH4m.gif
2)选择您出错的表,并找到该表的自增字段,有 auto_increment 标识的字段即为该表的自增字段。
http://faq.comsenz.com/attachments/2008/07/11_200807231015201Rq1m.gif
3)点击浏览,然后根据自增字段降序排序,记下自增字段的当前最大值。
http://faq.comsenz.com/attachments/2008/07/11_200807231026361aUEm.gif
4)点击该页面上方的操作,会看到“表选项”中的 auto_increment 项,这就是下一条你要插入的数据的自增字段的值,如果这个值和刚才记下的当前自增字段的最大值一样,就会报错了,所以将这个值改为大于刚才记下的当前自增字段的最大值,然后点击“执行”,即可解决问题。
示例中给出的当前自增字段的最大值为 54 ,而下一条你要插入的数据的自增字段的值为 55 ,这样则不会有问题。
http://faq.comsenz.com/attachments/2008/07/11_200807231034051eib0.gif
文章转自:http://faq.comsenz.com/viewnews-100
页:
[1]