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
作業會有效地回滾。