Phi*_*ber 47 mysql unique-constraint
我正在尝试使用ALTER IGNORE TABLE + UNIQUE KEY从MySQL表中删除重复项.MySQL文档说:
IGNORE是标准SQL的MySQL扩展.如果新表中的唯一键上存在重复项,或者启用了严格模式时出现警告,它将控制ALTER TABLE的工作方式.如果未指定IGNORE,则复制将中止并在发生重复键错误时回滚.如果指定了IGNORE,则只使用第一行在唯一键上具有重复项的行.其他冲突的行将被删除.不正确的值将截断为最接近的匹配可接受值.
当我运行查询时......
ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field)
Run Code Online (Sandbox Code Playgroud)
...我仍然收到错误#1062 - 关键'dupidx'重复输入'blabla'.
Emm*_*mma 96
IGNOREMySQL 的关键字扩展似乎在某些版本的MySQL上的InnoDB版本中存在错误.
您可以随时转换为MyISAM,IGNORE-ADD索引,然后转换回InnoDB
ALTER TABLE table ENGINE MyISAM;
ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field);
ALTER TABLE table ENGINE InnoDB;
Run Code Online (Sandbox Code Playgroud)
请注意,如果您有外键约束,这将不起作用,您必须先删除它们,然后稍后再添加它们.
Jay*_*yne 26
或者尝试设置会话old_alter_table = 1(不要忘记将其设置回来!)
请参阅:http://mysqlolyk.wordpress.com/2012/02/18/alter-ignore-table-add-index-always-give-errors/