MySQL 8.4 版本注意事項
當您嘗試從較舊的來源複製到較新的副本,並且在來源上使用在副本上執行的較新 MySQL 版本中為保留字的識別碼時,可能會遇到問題。例如,在 MySQL 5.7 來源上的名為 rank
的資料表欄位,正在複製到 MySQL 8.4 副本時可能會導致問題,因為 RANK
在 MySQL 8.0 中變成保留字。
在這種情況下,複製可能會失敗,並出現錯誤 1064 您的 SQL 語法有錯誤...,即使使用保留字命名的資料庫或資料表,或具有使用保留字命名的欄位的資料表已從複製中排除。這是因為每個 SQL 事件都必須由副本在執行前進行剖析,以便副本知道會影響哪個或哪些資料庫物件。只有在剖析事件後,副本才能套用由 --replicate-do-db
、--replicate-do-table
、--replicate-ignore-db
和 --replicate-ignore-table
定義的任何篩選規則。
若要解決來源上資料庫、資料表或欄位名稱在副本上會被視為保留字的問題,請執行下列其中一項操作
在來源上使用一個或多個
ALTER TABLE
陳述式,以變更任何資料庫物件的名稱,這些名稱在副本上會被視為保留字,並變更使用舊名稱的任何 SQL 陳述式,改為使用新名稱。在使用這些資料庫物件名稱的任何 SQL 陳述式中,使用反引號字元 (
`
) 將名稱寫為引號識別碼。
如需依 MySQL 版本列出的保留字,請參閱 MySQL 伺服器版本參考中的 MySQL 8.0 中的關鍵字與保留字。如需識別碼引號規則,請參閱 第 11.2 節「綱要物件名稱」。