2009-12-18 228 views
2

我在將utf8數據庫遷移到另一臺服務器時遇到問題...每個源表和目標表都有"DEFAULT CHARSET=utf8"MySQL UTF8數據庫遷移

我使用mysqldump轉儲數據和mysql < file.sql導入,但是當源表中我有「España」,在目的地我得到「España」。

我看了一些指南,我用--default-character-set=latin1導出和導入,但問題依然存在。 我也嘗試過--default-character-set=utf8導入,但結果是:「Espa」,數據被截斷爲多字節字符的第一次出現。

我需要幫助!

預先感謝您

回答

0

什麼是每個表的collation?聽起來像第二張桌子仍然編碼ISO-8859-1或類似。

另外,您使用什麼工具來查看目標數據?你確定該工具使用的連接是UTF-8嗎?

+0

這裏是SHOW CREATE TABLE代碼: CREATE TABLE'Country'( 'id' INT(10)無符號NOT NULL的auto_increment, 'country' VARCHAR(255)NOT NULL, PRIMARY KEY('id' ) )ENGINE = MyISAM DEFAULT CHARSET = utf8 如何獲取排序規則? – Dario 2009-12-18 12:06:37

+0

我使用--default-character-set = utf8來導入數據使用mysql <文件 – Dario 2009-12-18 12:19:12

+0

嘗試DESCRIBE。 - – 2009-12-18 12:28:03

1

嘗試

iconv --from-code=ISO-8859-1 --to-code=UTF-8 ./file >file.utf8 
mysql --default-charset=utf8 < file.utf8 

如果它不工作,我勸你還是導入數據,然後將其轉換

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 

希望對大家有所幫助

3

,以確保客戶是非常重要的設置爲UTF8。令人困惑的是,它與將數據庫設置爲UTF8不同。打開/etc/my.cnf,確保你在[mysql]下的default-character-set = utf8不只在[mysqld]下

現在你應該可以直接把UTF8轉儲到mysql客戶端。我還建議在mysqldump命令中使用--hex-blob選項,因爲mysqldump並不完美。