2009-12-18 186 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并不完美。