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

MySQL 5.0 數據導入 3.23 兼容性遷移:mysqldump --compatible 與字符集雙端指定

     編輯:MySQL 資料庫相關知識

將 MySQL 5.0 數據遷移至 3.23 版本,需解決語法不兼容(如 ENGINE= vs TYPE=)與字符集協商失敗兩大問題。本文記錄實測可用的導出導入參數組合。

一、失嘗試

# 僅指定兼容模式
mysqldump -uroot --skip-comments --compatible=mysql323 --databases db1 db2 db3 > mydump.sql
# 導入 3.23 報錯:字符集協商失敗、ENGINE= 語法錯誤

二、關鍵缺失:雙端顯式指定字符集

MySQL 5.0 默認 latin1,3.23 默認 latin1,但若數據實為 gbk/utf8,雙端必須**顯式聲明同一字符集**,否則連接層會按默認協商導致亂碼或報錯。

三、正確命令模板

導出端(MySQL 5.0)

mysqldump -uroot \
  --default-character-set=gbk \   # 或 utf8,與實際數據編碼一致
  --skip-comments \
  --compatible=mysql323 \
  --databases db1 > db1.sql

導入端(MySQL 3.23.58)

mysql -uroot --default-character-set=gbk  # 必須與導出端一致
mysql> SOURCE /path/db1.sql;

四、--compatible=mysql323 實際轉換效果

  • ENGINE=InnoDB → TYPE=MyISAM(3.23 無 InnoDB,無 TYPE=InnoDB)
  • AUTO_INCREMENT 語法保留(3.23 支持)
  • 移除 CHARSET=、COLLATE= 等 4.1+ 專有子句
  • 註釋行以 /*!40100 ... */ 版本條件註釋包裹,3.23 忽略執行

五、遷移檢查清單

  1. 確認源庫數據實際編碼(SHOW CREATE TABLE、SELECT HEX(col))
  2. 導出、導入**雙端**指定相同 --default-character-set
  3. 導入後抽樣驗證中文、數字、日期完整性
  4. 3.23 不支持 InnoDB、utf8mb4、VARCHAR > 255、DATETIME 微秒 等特性,評估業務影響

跨大版本遷移核心在於「語法兼容模式 + 雙端字符集顯式綁定」。--compatible=mysql323 處理語法,--default-character-set 處理編碼,雙管齊下方可平滑落地。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved