MySQL 8.4 版本注意事項
線上 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
操作會有效回滾。