Ash*_*ley 9 mysql sql phpmyadmin
因此,当尝试向字段添加自动增量时,它会出现#1062 - 密钥1的重复条目"1".我已经尝试删除主键并重新添加它,并且工作正常(如果有重复,我认为不会这样做?)
但是当我尝试向字段添加自动增量时,它会抛出错误.它为我提供了一个运行以下SQL的浏览选项:
SELECT *
FROM `myTbl`
WHERE CONCAT_WS( "-", 11 ) = "1"
ORDER BY 11
LIMIT 0 , 30
Run Code Online (Sandbox Code Playgroud)
但是,这会返回一个空结果集..表明没有重复项.所以,如果没有重复,为什么我不能添加自动增量?
Mic*_*ior 22
您是否有任何有价值的行0或NULL此列?ALTER TABLE可以导致主键重新排序.在密钥为0的情况下,MySQL将尝试为其赋值1,如果密钥1已存在则将失败.
尝试将列中的任何值0或NULL值更改为更高(和未使用)的值.
如果您可以更改表中的数据,Michael Mior 的答案就有效。不过,还有一种解决方法可以让您保持数据完整(我已在 MySQL 5.5 上对此进行了测试)。请记住,仅仅因为这个原因,在 MySQL 中使用零值作为主键并不是推荐的做法。如果你能去掉零,那就去做吧。
插入零时禁用自动值生成:
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
Run Code Online (Sandbox Code Playgroud)
将 AUTO_INCRMENT 添加到您的列中:
ALTER TABLE ... AUTO_INCREMENT;
Run Code Online (Sandbox Code Playgroud)
重新启用自动值生成:
SET SQL_MODE='';
Run Code Online (Sandbox Code Playgroud)
显然,在整个操作期间向表中插入数据是不允许的。否则列中将会出现不需要的零值。
| 归档时间: |
|
| 查看次数: |
15898 次 |
| 最近记录: |