一、前言:
今天把本地數據庫導出的sql文件上傳到服務器上的數據庫的時候,出現了以下的錯誤。
改錯誤之處我的文件再導入到數據庫的時候,出現字符集不一樣的錯誤。
二、問題產生的原因
這是數據庫編碼的問題,查了網上的一些資料,出現這個問題的原因在於,wordpress4.2版本之後升級了數據庫,如果數據庫是mysql5.5以上的互相導入沒有問題,如果老網站是mysql5.5的,導入新網站是mysql5.5版本以下的,就會出現這個問題。
三、問題的解決辦法:
1、替換代碼
從老的數據庫中導出的數據庫文件,用vscode等代碼編輯器打開。
查找:utf8mb4_unicode_ci,全部替換爲:utf8_general_ci
查找:utf8mb4 全部替換爲 utf8
補充:vscode替換內容的快捷鍵爲crtl+h
2、替換字符集
1、通過下面的語句查看當前數據庫的編碼格式
SHOW VARIABLES LIKE 'character%';
2、然後把 'character_set_server '的編碼格式修改爲uft8,其它不同的也是,得到下面圖片一樣的之後,導出來的sql文件就能正確的執行了。
SET character_set_server = "utf8"
三、問題的分析:
通過導入和修改sql文件的過程中發現,有些文件能夠導入並且不報字符集的錯誤。之後經過對比數據庫中表的格式,以及sql文件中出現不符合要求的字符集。發現出現 utf8mb4 格式的字符集的地方是再 varchar 出現的地方,如果只有一些表能夠導入,那麼說明這些表中不存在 varchar 類型。