MySQL 9.0 版本注意事項
當您嘗試從較舊的來源複製到較新的副本,並且使用來源上在較新 MySQL 版本(在副本上執行)中是保留字的識別碼時,您可能會遇到問題。例如,在 MySQL 5.7 來源上的名為 rank
的資料表欄,複製到 MySQL 9.0 副本時可能會造成問題,因為 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 8.0 中的關鍵字和保留字,在MySQL 伺服器版本參考中。有關識別符引用規則,請參閱第 11.2 節「結構描述物件名稱」。