0

我有一个数据库需要从 转换latin_1utf8. 这种转换没有问题,在我的暂存环境中,当我添加到 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。我可以让不同的编码共享同一个服务器吗?我是否需要更改默认配置才能做到这一点?还是这是自找麻烦?

4

1 回答 1

3

实际数据的编码是基于每列的,即每个表中的每一列都可以有不同的编码。数据被动态转码到/从每个单独的客户端具有的连接编码;每个客户端可以有不同的连接编码,每个客户端都可以动态更改连接编码。您不需要更改配置文件中的任何内容;事实上你不应该这样做,因为这可能会影响依赖默认值的客户端的行为。

只需为您的客户端设置您自己的编码设置,您就可以了。阅读本文了解更多详情。

于 2013-05-10T17:12:11.833 回答