MySQL 9.0 版本注意事項
線上 DDL 作業失敗通常是由於下列其中一個條件
ALGORITHM子句指定與特定 DDL 作業類型或儲存引擎不相容的演算法。LOCK子句指定與特定 DDL 作業類型不相容的低程度鎖定 (SHARED或NONE)。在等待資料表上的互斥鎖時發生逾時,這在 DDL 作業的初始和最終階段可能需要短暫的時間。
當 MySQL 在建立索引期間將暫時排序檔案寫入磁碟時,
tmpdir或innodb_tmpdir檔案系統的磁碟空間不足。如需詳細資訊,請參閱第 17.12.3 節,「線上 DDL 空間需求」。此操作需要很長時間,而且並行的 DML 對資料表進行了大量修改,導致暫時線上記錄的大小超過
innodb_online_alter_log_max_size設定選項的值。此條件會導致DB_ONLINE_LOG_TOO_BIG錯誤。並行的 DML 對資料表進行了允許原始資料表定義的變更,但不允許新的定義。此作業只會在最後才失敗,也就是當 MySQL 嘗試套用並行 DML 陳述式的所有變更時。例如,您可能會在建立唯一索引時將重複值插入到資料行中,或者您可能會在資料行上建立主鍵索引時將
NULL值插入到資料行中。並行 DML 所做的變更會優先,而且ALTER TABLE作業會有效地回滾。