MySQL: ALTER IGNORE TABLE gives “Integrity constraint violation”

后端 未结 3 1943
[愿得一人]
[愿得一人] 2020-11-27 12:45

I\'m trying to remove duplicates from a MySQL table using ALTER IGNORE TABLE + an UNIQUE KEY. The MySQL documentation says:

IGNORE is a MySQL extensio

3条回答
  •  青春惊慌失措
    2020-11-27 13:14

    The problem is that you have duplicate data in the field you're trying to index. You'll need to remove the offending duplicates before you can add a unique index.

    One way is to do the following:

       CREATE TABLE tmp_table LIKE table;
       ALTER IGNORE TABLE tmp_table ADD UNIQUE INDEX dupidx (field);
       INSERT IGNORE INTO tmp_table SELECT * FROM table;
       DROP TABLE table;
       RENAME TABLE tmp_table TO table;
    

    this allows you to insert only the unique data into the table

提交回复
热议问题