首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 5.0 資料遷移至 3.23 低版本:相容模式與字元集雙端指定關鍵

     編輯:MySQL 資料庫相關知識

問題背景

需將 MySQL 5.0 資料庫遷移至 3.23.58,直接 mysqldump 導入報錯,嘗試多種參數組合均失敗。

根因

  • 版本差異導致 SQL 語法不相容 (如 ENGINE= vs TYPE=、字元集子句)。
  • **字元集不一致**:來源 5.0 預設 utf8,目標 3.23 預設 latin1,雙端未指定導致亂碼/語法錯誤。

解決方案

導出端 (MySQL 5.0)

mysqldump -u root \
  --default-character-set=utf8 \
  --skip-comments \
  --compatible=mysql323 \
  --databases db1 db2 db3 > mydump.sql
  • --compatible=mysql323:產生 3.23 相容語法 (如 TYPE=MyISAM、無字元集子句)。
  • --default-character-set=utf8:明確宣告來源編碼,確保導出檔內容標示正確。

導入端 (MySQL 3.23.58)

mysql -u root --default-character-set=utf8
mysql> SOURCE /path/mydump.sql;
  • **客戶端同樣指定 --default-character-set=utf8**,讓 Server 知道傳入資料編碼,正確轉存為 latin1 (或目標字元集)。

關鍵參數對照表

參數作用注意
--compatible=mysql323輸出 3.23 相容 SQL也支援 mysql40, postgresql, oracle 等
--default-character-set設定連線/導出編碼**導出端與導入端必須一致**
--skip-comments移除版本註釋避免舊版解析報錯
--no-create-options不輸出 MySQL 專屬選項進一步提高相容性

遷移檢查清單

  1. 目標版本支援的儲存引擎 (3.23 僅 MyISAM/ISAM/HEAP,無 InnoDB)。
  2. 表名/欄位名長度限制 (3.23: 64 字元)。
  3. SQL 模式差異 (如 NOT NULL 預設值處理)。
  4. 遷移後 **必須跑完整測試套件** 驗證應用相容性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved