因为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;