我们有一个旧的 5.1 Mysql 服务器在服务器 2003 上运行。最近我们使用 Mysql 5.6 和服务器 2008 迁移到一个新的环境。现在在新服务器上,当插入特殊字符(如“Ô)时,我们不断收到错误消息。
现在我检查了源编码,它是 UTF-8。但是旧的 Mysql 服务器被配置为 latin1(Server/tables/colonms) 并带有排序规则 latin_swedish_ci,我们在旧环境中没有收到任何错误。
现在我做了一些测试,因为我们不在新环境中。我尝试将所有表设置为表/冒号以及 latin1。在这两种情况下,我都会不断收到这些错误。
我注意到的是,在旧服务器上,服务器默认字符集是 latin1,而在新服务器上是 utf-8。这可能是问题吗?我觉得这很奇怪,因为来源是 utf-8。
是否有一些可以在旧环境中打开的选项来处理这个问题?我不确定是否存在类似的东西。我确实比较了 mysql 管理工具中的设置,除了默认的字符集之外,它看起来是一样的。
编辑:
显示像'char%'这样的变量;
老服务器:
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8 | *
| character_set_connection | utf8 | *
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 | *
| character_set_server | latin1 |
| character_set_system | utf8 |
新服务器:
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8mb4 | *
| character_set_connection | utf8mb4 | *
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 | *
| character_set_server | utf8 |
| character_set_system | utf8 |
据我从 MySQL 站点上的文章中了解到,utf8mb4 是 utf8 的超集,我认为这不应该给编码带来问题,因为它们在编码上基本相同,对吧?