开发者社区 问答 正文

MySQL:ALTER IGNORE TABLE给出“违反完整性约束”?mysql

我正在尝试使用ALTER IGNORE TABLE + UNIQUE KEY从MySQL表中删除重复项。MySQL文档说:

IGNORE是标准SQL的MySQL扩展。如果新表中的唯一键上有重复项,或者在启用严格模式时出现警告,则它控制ALTER TABLE的工作方式。如果未指定IGNORE,则在发生重复键错误时,副本将中止并回滚。如果指定了IGNORE,则只有第一行用于唯一键重复的行。其他冲突的行将被删除。不正确的值将被截断为最接近的匹配可接受值。

当我运行查询时...

ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field) ...我仍然收到错误#1062-键'dupidx'的条目'blabla'重复。

展开
收起
保持可爱mmm 2020-05-17 18:51:46 843 分享 版权
1 条回答
写回答
取消 提交回答
  • 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; 请注意,如果您具有外键约束,则此约束将不起作用,您必须先删除这些约束,然后再添加它们。来源:stack overflow

    2020-05-17 18:56:44
    赞同 展开评论