开发者社区> 问答> 正文

Duplicate entry 'xxx'for key 1-mysql报错

Duplicate entry 'xxx'for key 1

展开
收起
montos 2020-05-27 21:26:25 753 0
1 条回答
写回答
取消 提交回答
    • 翻译:插入 xxx使索引1重复
    • 分析:索引如果是primaryunique这两两种,那么数据表的数据对应的这个字段就必须保证其每条记录的唯一性。否则就会产生这个错误。一般发生在对数据库写操作的时候,例如Discuz!4.1论坛程序要求所有会员的用户名username必须唯一,即username的索引是unique,这时如果强行往cdb_members表里插入一个已有的username的记录就会发上这个错误,或者将一条记录的username更新 为已有的一个username。改变表结构的时候也有可能导致这个错误。例如 Discuz!4.0论坛的数据库中cdb_members.username的索引类型是index这个时候是允许有相同username的记录存在的,在升级到4.1的时候,因为要将username的索引由原来的index变 为unique。如果这时cdb_members里存在有相同的username的记录,那么就会引发这个错误。导出数据据时有时会因为一些原因(作者目前还不清楚)导致同一条记录被重复导出,那么这个备份数据在导入的时候出现这个错误是在所难免的了。修改了auto_increment的值,致使“下一个Autoindex”为一条已经存在的记录解决: 两种思路,一是破坏掉唯一性的索引。二是把重复的数据记录干掉,只保留一条。很显然第一种思路是不可取的。那么按照二的思路我们得出以下几种解决方法,对应上面的i iiiii略按照错误提示里的信息到数据库中将重复的记录删除,仅保留一条即可。之后继续执行升级操作。这种情况发生的概率很小,可以用文本编辑器打开备份文档,查找重复的信息。将其多余的拿掉,仅保留一条即可。查询出表中auto_increment最大的一条记录,设置auto_incerment比其大一即可。PS:repaire table "表名“,可以暂时解决问题。
    2020-05-28 16:30:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像