mysql 加字段 报错 失败信息:Error 1062 (23000): Duplicate entry ..... for key 'uq_idx'
研发找过来说使用online ddl 添加字段报错唯一索引冲突,
失败信息:Error 1062 (23000): Duplicate entry ..... for key 'uq_idx',
我第一反应你数据冲突了,找DBA干什么,但是仔细一想,不对啊,不是加唯一索引冲突,是加字段冲突,这不应该啊,还没遇到过加字段发生这个问题呢,看来又得一番解决了。
虽然知道不可能是已有数据有重复值,但是还是根据报错信息里的数据去数据库查了下,果然数据只有一条。
在百度、ai、官网搜索后,总算找到了原因,首先我们得了解下 Online DDL 的大致原理:
MySQL 在执行 DDL 期间,会将新产生的 DML存储到临时文件里,这个临时日志文件的大小由参数innodb_online_alter_log_max_size 控制。等 DDL 执行完后,再把 DML 应用到对应的表上。但是数据写到日志文件的过程不检查唯一性,这就很坑了,所以重复数据写日志文件没问题,然后往数据库里写的时候就报错了
你说这算不算bug呢?

浙公网安备 33010602011771号