2022-02-24 5.7版本后alter table不能使用ignore解决方案

问题:在已经存在的许多数据的库中想要加入一个唯一键,这时候如果直接加mysql会报一个已存在重复建不能加入唯一键的 异常;
搜了搜,发现说可以用

ALTER IGNORE TABLE `a` ADD UNIQUE `idx_companyId_name_type` (`company_id`, `name`,`type`);

这个方法忽略掉重复键
实际操作后发现还是会报错
原因 :5.7版本以后,alter table 这个关键字已经不能加入ignore了;说是破坏了什么原则;
解决方法:

create TABLE b LIKE a
CREATE  UNIQUE INDEX idx_companyId_name_type ON b (company_id,name,type)
insert IGNORE into b SELECT  * from a
rename TABLE a to a_history
rename TABLE b to a

1.先建一个临时表b
2.在b表上新建需要的唯一键
3.insert的ignore可以用,用这种方法把a表数据导入到b中,如果仔细看affected会变少
4.交换名字 (如果没啥问题 a_history就删除了吧)

你可能感兴趣的:(2022-02-24 5.7版本后alter table不能使用ignore解决方案)