mysql 5.7向已有重复数据表中创建唯一索引

因为mysql 5.7已经将alter ignore talbe语法去掉了。这在MySQL 5.6.25中工作正常,但在5.7.9中给出了语法错误,所以不能这样操作了,下面是我的操作思路。

ALTER IGNORE TABLE `table_name`
ADD UNIQUE `some_id` (`some_id`);

1、按照已有表的结构创建一张新表

create table dfs_img_file_index_new like dfs_img_file_index;

2、查看新创建的表中是否有索引,把没用索引drop掉。

show index on dfs_img_file_index_new;

3、在新表中添加唯一索引

alter table dfs_img_file_index_new add unique uk_dfs_img_file (element, type, data_time);

4、将现在录入数据的表更名

alter table dfs_img_file_index rename dfs_img_file_index_old;

5、将新创建的表更名

alter table dfs_img_file_index_new rename dfs_img_file_index;

6、最后将旧表数据导入到新表

insert into dfs_img_file_index (file_name, element, type, path, virtual_path, data_time) select file_name, element, type, path, virtual_path, data_time from dfs_img_file_index_oldx_old group by element,type,data_time,path,file_name, virtual_path;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值