[discuz教程]数据库出错提示Duplicate entry * for key *的解决方法

错误编号:1062

错误提示:
  • 查询语句错误[1062]

  • ERR: Duplicate entry '16777215' for key 'PRIMARY'

  • SQL: INSERT INTO forum_attachment SET `tid`='0',`pid`='0',`uid`='1',`tableid`='127'

  • PHP: misc.php:0058 -> source/module/misc/misc_swfupload.php:0089 -> source/class/class_forumupload.php:0106 -> source/function/function_core.php:2484 -> source/class/class_core.php:0930

  • User: uid=1; IP=183.7.77.81; RIP:183.7.77.81 Request: /bbs/misc.php?mod=swfupload&operation=upload&type=file&inajax=yes&infloat=yes&simple=2


[color=rgb(51, 102, 153) !important]复制代码

问题分析:

向唯一字段插入相同数据。

解决方法:

方法1、请检查程序是否做了修改,如果修改过,建议用我们的原程序覆盖您的修改,再次检查问题。

方法2、用phpmyadmin或tools工具修复出错表,如果还没修复可方法3手动修复。

方法3、如果您的站点上有 phpMyAdmin ,还可以通过他检查下您的数据库中出错的表的自增字段的当前自增值是否和该表中自增字段的最大值相同,如果相同则会出现该错误。

方法4、如果您正在转移数据库,请确认数据库的版本是否相同。

方法5、如果以上方法还未解决,请恢复备份,用 DBCheck 将数据库检验为标准结构,并且重新开始升级。



方法3的检查修改详细流程:(以 discuz! 的 threads 表为例,其他操作均相同)
1)进入您的 phpMyAdmin ,然后在左侧选择您出错的数据库。
 

2)选择您出错的表,并找到该表的自增字段,有 auto_increment 标识的字段即为该表的自增字段。
 
3)点击浏览,然后根据自增字段降序排序,记下自增字段的当前最大值。
 

4)点击该页面上方的操作,会看到“表选项”中的 auto_increment 项,这就是下一条你要插入的数据的自增字段的值,如果这个值和刚才记下的当前自增字段的最大值一样,就会报错了,所以将这个值改为大于刚才记下的当前自增字段的最大值,然后点击“执行”,即可解决问题。

示例中给出的当前自增字段的最大值为 54 ,而下一条你要插入的数据的自增字段的值为 55 ,这样则不会有问题。

 


版权声明:本文来源于互联网,如有侵权,请联系下方邮箱,一个工作日删除!