MySQL UTF8数据库迁移

时间:2009-12-18 12:02:38

标签: mysql encoding utf-8 migration

我在将utf8数据库迁移到另一台服务器时遇到问题...每个源表和目标表都有一个"DEFAULT CHARSET=utf8"

我使用mysqldump转储数据,mysql < file.sql导入,但在源表中我有“España”,在目的地我得到“España”。

我阅读了一些指南,我使用--default-character-set=latin1导出和导入,但问题仍然存在。 我还尝试导入--default-character-set=utf8,但结果是:“Espa”,数据被截断为第一次出现多字节字符。

我需要帮助!

提前谢谢

3 个答案:

答案 0 :(得分:3)

确保将客户端设置为UTF8非常重要。令人困惑的是,它与将数据库设置为UTF8不同。打开/etc/my.cnf并确保[mysql]下的default-character-set = utf8不仅仅在[mysqld]下

现在您应该能够将UTF8转储直接传递到mysql客户端。我还建议在mysqldump命令上使用选项--hex-blob,因为mysqldump并不完美。

答案 1 :(得分: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;

希望它能帮助

答案 2 :(得分:0)

每张桌子的collation是多少?听起来像第二个表仍然编码ISO-8859-1或类似。

另外,您使用什么工具查看目标数据?你确定工具使用的连接也是UTF-8吗?