MySQL 8.3 執行個體中,表格的
.frm
檔案與InnoDB
資料字典之間的結構描述不符,可能會導致升級至 MySQL 8.4 失敗。此類不符可能是因為.frm
檔案損毀所致。為了解決此問題,請在再次嘗試升級之前,傾印並還原受影響的表格。如果發生問題,例如新的 mysqld 伺服器無法啟動,請確認您沒有先前安裝的舊
my.cnf
檔案。您可以使用--print-defaults
選項檢查 (例如,mysqld --print-defaults)。如果此命令顯示的內容不只是程式名稱,則表示您有一個作用中的my.cnf
檔案,會影響伺服器或用戶端運作。如果升級後,您在編譯的用戶端程式中遇到問題,例如
指令不同步
或非預期的核心傾印,則可能是您在編譯程式時使用了舊的標頭或程式庫檔案。在這種情況下,請檢查mysql.h
檔案和libmysqlclient.a
程式庫的日期,以確認它們來自新的 MySQL 發行版本。如果不是,請使用新的標頭和程式庫重新編譯您的程式。如果程式庫的主要版本號碼已變更 (例如,從libmysqlclient.so.20
變更為libmysqlclient.so.21
),則針對共用用戶端程式庫編譯的程式可能也需要重新編譯。如果您使用給定的名稱建立了可載入的函式,並將 MySQL 升級至實作具有相同名稱的新內建函式的版本,則可載入的函式將無法存取。為了修正此問題,請使用
DROP FUNCTION
刪除可載入的函式,然後使用CREATE FUNCTION
以不同的非衝突名稱重新建立可載入的函式。如果新版本的 MySQL 實作具有與現有儲存函式相同名稱的內建函式,情況也相同。如需有關伺服器如何解讀對不同類型函式的參照的規則,請參閱 第 11.2.5 節,〈函式名稱剖析與解析〉。如果由於 第 3.6 節,〈準備安裝以進行升級〉中概述的任何問題而導致升級至 MySQL 8.4 失敗,伺服器會將所有變更還原至資料目錄。在這種情況下,請移除所有重做記錄檔,並在現有的資料目錄中重新啟動 MySQL 8.3 伺服器,以解決錯誤。重做記錄檔 (
ib_logfile*
) 預設位於 MySQL 資料目錄中。修正錯誤後,請在再次嘗試升級之前執行慢速關機 (方法是設定innodb_fast_shutdown=0
)。