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

MySQL 5.0 資料遷移至 MySQL 3.23 實戰:--compatible 與字符集雙重指定關鍵

     編輯:MySQL 資料庫相關知識

遷移難點

  • MySQL 5.0 → 3.23 跨大版本降級,語法、字符集、儲存格式均不相容。
  • 直接 mysqldump 匯入報錯:Unknown collation、Invalid default value、ROW_FORMAT 等。

關鍵參數組合

# 來源端 (MySQL 5.0)
mysqldump -u root -p \
  --default-character-set=utf8 \
  --skip-comments \
  --compatible=mysql323 \
  --databases db1 db2 db3 > dump_323.sql

# 目標端 (MySQL 3.23.58)
mysql -u root -p --default-character-set=utf8
mysql> SOURCE /path/dump_323.sql;

參數解析

參數作用
--compatible=mysql323產生 3.23 相容 SQL:移除 ENGINE=、AUTO_INCREMENT 於建表後、簡化索引定義等。
--default-character-set=utf8強制輸出檔案編碼為 UTF-8,避免 5.0 預設 latin1 導致 3.23 讀取亂碼。
--skip-comments移除版本註釋,減少 3.23 解析錯誤。
目標端同樣指定 --default-character-set確保客戶端與伺服器字符集協商一致,避免隱性轉換。

常見殘留問題與修正

  • TYPE=MyISAM → 3.23 不支援,手工改為 ENGINE=MyISAM 或移除。
  • CHARSET=utf8 → 3.23 無 utf8,改 CHARSET=gbk 或 latin1 (視實際資料)。
  • DATETIME DEFAULT CURRENT_TIMESTAMP → 3.23 不支援,移除預設值或用 Trigger。
  • 大表 mysqldump --quick 避免記憶體溢位。

驗證清單

  1. SHOW TABLE STATUS 筆數對齊。
  2. CHECKSUM TABLE 資料一致性。
  3. 應用端測試 CRUD 流程。

現代建議

MySQL 3.23 已於 2007 年停止支援,**極不建議** 新專案部署。若受限於舊系統,請規劃升級路徑:3.23 → 5.1 → 5.7 → 8.0,每階段以 mysql_upgrade 修正系統表。

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