MySQL执行Alter table xx add column报Duplicate entry错误

tech2025-09-09  6

mysql版本是5.7.25-28-log,表的存储引擎是InnoDB。 执行如下DDL:

alter table mytable add column ...(省略了部分字段), add column price int NOT NULL DEFAULT '0' COMMENT '价格';

却报了错误

ERROR 1062 (23000): Duplicate entry '9277700--1' for key 'spu_sku' Thu Sep 3 16:56:56 2020

这张表有UNIQUE KEY `spu_sku` (`spu`,`sku`),会保证不会重复,应该不会出现Duplicate entry的错误, 而且查询的时候发现表里确实只有一条记录的spu是9277700,sku是-1。

网上查询了一下发现这个是MySQL执行online DDL会存在的问题。按照https://jira.mariadb.org/browse/MDEV-14535这个网页上说的解决方法。 执行DDL(加了ALGORITHM=COPY):

alter table mytable add column ...(省略了部分字段), add column price int NOT NULL DEFAULT '0' COMMENT '价格' ALGORITHM=COPY;

解决问题,不再报错了。


感兴趣的读者,可以参考Mysql官方文档: https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-limitations.html

最新回复(0)