zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

数据库新增表字段提示Duplicate entry for key PRIMARY,mysql锁表的具体使用

mysql数据库 for 提示 Key 具体 新增 Duplicate
2023-09-27 14:27:29 时间

问题

MySQL - 尝试添加新列时出现重复输入错误
我有一个MySQL数据库,其表有很多的数据.我想添加另一列,但我一直收到以下错误:
Error 1062: Duplicate entry ‘’ for key ‘PRIMARY’ SQL Statement
很奇怪的一个问题,我加字段怎么会重复主键重复呢?

原因

运行 ALTER TABLE 操作的线程将应用 DML 操作的“在线日志”,这些操作是从其他连接线程在同一表上并发运行的。应用 DML 操作时,可能会遇到重复键条目错误(ERROR 1062 (23000): Duplicate entry),即使重复条目只是临时的,并且会被“在线日志”中的后续条目还原. 这类似于 InnoDB 中的外键约束检查的想法,其中约束必须在事务期间保持

大概就是我在加字段的时候,数据库有插入了新数据

解决

它解决方案会锁定写入表,但如果表不是很大,通常适合解决问题

LOCK TABLES my_table WRITE;

ALTER TABLE my_table 
ADD COLUMN `ts` DATETIME NULL AFTER `id`;

UNLOCK TABLES;

注意

如果新增字段发现错误了,记得手动执行UNLOCK TABLES;,不然表就一直被锁住了