我在将utf8数据库迁移到另一台服务器时遇到问题...每个源表和目标表都有一个"DEFAULT CHARSET=utf8"
。
我使用mysqldump转储数据,mysql < file.sql
导入,但在源表中我有“España”,在目的地我得到“España”。
我阅读了一些指南,我使用--default-character-set=latin1
导出和导入,但问题仍然存在。
我还尝试导入--default-character-set=utf8
,但结果是:“Espa”,数据被截断为第一次出现多字节字符。
我需要帮助!
提前谢谢
答案 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吗?