MySQL 4.0 無字符集概念,4.1+ 引入多字符集支持。直接導入 4.0 導出的數據到 4.1,中文極易亂碼。本文提供經實戰驗證的兩種遷移方案。
gb2312(或 utf8)CREATE TABLE 語句:CHAR → BINARY,VARCHAR → VARBINARYCREATE TABLE t (c VARCHAR(50)) CHARACTER SET BINARY;
ALTER TABLE t MODIFY c VARCHAR(50) CHARACTER SET gb2312; 恢復原類型並指定字符集若表較少,可導入後逐個字段執行:
ALTER TABLE t CHANGE c c VARCHAR(50) CHARACTER SET gb2312;
避免一次性修改大量表導致鎖表過久影響性能。
MySQL 4.1 導入時會根據目標表字符集對數據進行編碼轉換。通過先聲明為 BINARY,MySQL 視為無編碼二進制數據,直接存儲原始字節;後再指定正確字符集,實現無損遷移。
mysqldump --default-character-set=latin1 導出SELECT HEX(column) 驗證字節一致性