错误 #1062 主键的 Mysql 重复条目

Posted

技术标签:

【中文标题】错误 #1062 主键的 Mysql 重复条目【英文标题】:Error #1062 Mysql Duplicate Entry for the key primary 【发布时间】:2018-05-01 15:01:18 【问题描述】:

我有很大的 mysql 表“文档”(超过 3 000 000 行)。 该表有列id --- 主键无符号和did ----- 无符号。 有时会删除一些行。但我需要自动增量为 1234 而不是 1479。 我执行sql请求:

update docs set id=@num:=@num+1 where 0 in(select @num:=0)

并收到错误 #1062。

2 个问题: 1. 为什么我的主键有重复条目? 2. 如何删除?

【问题讨论】:

欢迎来到 SO。您的表中没有重复的条目。你误读了错误。您收到的错误 (#1062) 表明您的更新操作导致重复键。 那么如何更新表中的主键? 阅读此处:***.com/questions/17182045/… 这样做不是个好主意。应该使用主键来识别数据行,仅此而已。如果您需要为行提供连续数字,请考虑添加另一列,该列不是键,只是附加信息。 Change primary key (id) of a row in a table and shift the others downwards的可能重复 【参考方案1】:

我的想法更简单(删除并添加主要): 更改表 docsDROP id; ALTER TABLE docs ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT 首先,添加主键(id);

【讨论】:

以上是关于错误 #1062 主键的 Mysql 重复条目的主要内容,如果未能解决你的问题,请参考以下文章

IntegrityError:(1062,键的重复条目)

MySQL 错误:主键的重复条目“xxx”

MySQL上主键的重复条目

Mysql主键的重复条目(AUTO_INCREMENT)

错误代码:1062。重复条目 'PRIMARY'

[23000][1062] 键 'PRIMARY' 的重复条目 '0'