Mysql

mysql - 在 mysql 5.7.4 中刪除了 ALTER IGNORE ADD INDEX - 改用什麼?

  • March 10, 2020

我正在嘗試向表中添加索引,但前提是該索引不存在。我不知道索引名稱是什麼。在mysql手冊中我找到了alter ignore命令:

ALTER [IGNORE] TABLE tbl_name
[alter_specification [, alter_specification] ...]
[partition_options]

alter_specification:
table_options
...
| ADD {INDEX|KEY} [index_name]
   [index_type] (index_col_name,...) [index_option] ...

因此,我嘗試執行以下操作:

ALTER IGNORE TABLE payments ADD INDEX (id_project);

但是,這失敗了,並出現以下錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IGNORE TABLE payments ADD INDEX (id_project)' 

事實證明,從 mysql 5.7.4 開始,這已被刪除。

在較新版本的mysql中執行此操作的好方法是什麼?

供參考…

更新日誌 2014-03-27 5.6.17 – 添加或更改功能 –

ALTER TABLE ( http://dev.mysql.com/doc/refman/5.6/en/alter-table.html ) 的 IGNORE 子句現已棄用,並將在 MySQL 的未來版本中刪除。ALTER IGNORE TABLE 導致複製問題,阻止線上 ALTER TABLE 創建唯一索引,並導致外鍵問題(在父表中刪除的行)。

這可能會有所幫助:

  1. 重命名現有表並創建一個新表。
  2. 使用 insert ignore 將數據從舊表複製到新表。

引用自:https://dba.stackexchange.com/questions/143862