细节
-
错误
-
状态: Done">完成
-
高
-
解决方法: 固定
-
3.0.2
-
没有一个
-
没有一个
描述
设置
= = = = =
删除表t1
创建表t1 (
Id tinyint unsigned auto_increment主键
varchar(200) NOT NULL
);
INSERT INTO t1(非唯一)VALUES('test01'),('test01'),('test02');
SELECT * FROM t1;
行动
= = = = =
pt-online-schema-change——alter="ADD UNIQUE INDEX unique_1 (notunique)"——statistics——execute h=127.0.0.1,P=5711,D=test,t=t1,u=msandbox, P= msandbox
/预期想要的结果
===================
osc终止,因为唯一索引的数据不是唯一的
实际结果
==========
在MySQL 5.6上,具有重复条目的数据将被静默地删除
在MySQL 5.7中,有重复条目的数据被删除,并在统计数据中发出警告1062(可能也是MariaDB 5.5+)
相关的
= = = = = =
https://bugs.launchpad.net/雷竞技下载官网percona-toolkit/+bug/1099836
建议修复
===========
- 如果可能,在警告1062时终止,并且/或在添加添加唯一索引时需要一个——force-unique标志。
- 如果原始表的行数比原始表的行数少,则不要进行swap/drop(插入数?统计数据?)
版本
= = = = = = =
- MySQL 5.7.11
- 2.2.16 (git b1ca211)
意外行为的原因是pt-osc使用INSERT LOW_PRIORITY IGNORE来复制块,这只会在有UNIQUE约束违反时引发警告而不是错误(Percona和Oracle 5.6.35),所以pt-osc会默默地忽略这些行。雷竞技下载官网
例子
- pt_online_schema_change:10906 41234 INSERT LOW_PRIORITY IGNORE INTO ' xy '。“_table_new”()选择)((user_id > = ?))和((“user_id”< = ?))锁定/分享模式41234拷贝啃啃/下边界:18757143上边界:18773685
- pt_online_schema_change:10925 41234 SHOW WARNINGS
启动:https://bugs.launchpad.net/雷竞技下载官网percona-toolkit/+bug/1545129
