我有一个数据库需要从latin_1
转换为utf8
。这种转换没有问题,在我的暂存环境中,当我向my.cnf添加行时,一切正常(如this SO question中所示):
[client]
default-character-set = utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
运行适当的ALTER语句:
ALTER TABLE {row} CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
不幸的是,这个数据库并不仅仅位于MySQL服务器上。它与仍使用latin_1
编码的几个数据库共享服务器,这些数据库实际上不需要utf8
。我可以使用不同的编码共享同一台服务器,是否需要更改默认配置才能执行此操作?或者这是在寻找麻烦?
答案 0 :(得分:3)
实际数据的编码基于每列,即每个表中的每个列可以具有不同的编码。数据在运行中转发到/来自每个客户端的连接编码;每个客户端可以具有不同的连接编码,并且每个客户端可以动态地更改连接编码。您无需更改配置文件中的任何内容;事实上你不应该,因为这可能会影响依赖默认的客户的行为。
只需为您的客户设置自己的编码设置即可。阅读this了解更多详情。