最近在進行MySQL數(shù)據(jù)庫遷移的時候遇到了一個問題,就是數(shù)據(jù)庫中的中文字段出現(xiàn)了亂碼。經(jīng)過一番研究和嘗試,總結(jié)出以下方法:
第一步,查看源數(shù)據(jù)庫中的字符集類型,可以通過以下語句查看:
SHOW VARIABLES LIKE 'character_set_database'; SHOW VARIABLES LIKE 'collation_database';
如果結(jié)果為utf8或utf8mb4,則說明字符集類型為utf8。如果結(jié)果為GBK或GB2312,則說明字符集類型為GB2312。
第二步,創(chuàng)建目標(biāo)數(shù)據(jù)庫,確定目標(biāo)數(shù)據(jù)庫的字符集類型,可以通過以下語句設(shè)置:
CREATE DATABASE `mydatabase` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
第三步,將源數(shù)據(jù)庫中的表轉(zhuǎn)換為目標(biāo)數(shù)據(jù)庫使用的字符集類型,可以通過以下語句轉(zhuǎn)換:
ALTER TABLE `mytable` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
第四步,將源數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出,可以通過以下語句導(dǎo)出:
mysqldump -u root -p --result-file=backup.sql --default-character-set=utf8 database_name
第五步,將導(dǎo)出的SQL文件中的字符集類型修改為目標(biāo)數(shù)據(jù)庫使用的字符集類型,可以使用編輯器打開SQL文件進行修改,也可以通過以下語句修改:
sed -i 's/CHARSET=utf8mb4/CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci/g' backup.sql
第六步,將修改后的SQL文件導(dǎo)入到目標(biāo)數(shù)據(jù)庫,可以通過以下語句導(dǎo)入:
mysql -u root -p mydatabase< backup.sql
通過以上方法進行遷移,可以確保數(shù)據(jù)中的中文字段不會出現(xiàn)亂碼。