MySQL Workbench 不遵守配置的字符集 utf8mb4
MySQL Workbench not respecting configured charset utf8mb4
我一直在关注 this tutorial 如何为 unicode 设置 MySQL server/database,希望将默认字符集设置为 utf8mb4
,以及 utf8mb4_unicode_ci
的排序规则
就像教程中指定的一样,我在位于 C:\ProgramData\MySQL\MySQL Server 5.7 的 .ini 文件中应用了以下设置:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
当 运行 这个查询在 MySql Workbench:
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'
它没有显示我期望的系统变量,所以最初我以为我错误配置了服务器:
MySql Workbench 输出
character_set_client utf8
character_set_connection utf8
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8
character_set_server utf8mb4
character_set_system utf8
collation_connection utf8_general_ci
collation_database utf8mb4_unicode_ci
collation_server utf8mb4_unicode_ci
但是,当使用本机 MySQL 命令行客户端时,我看到了我所期望的:
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
为什么 MySql Workbench 不像命令行客户端那样遵守配置设置?
MySql: Windows/5.7.21
MySql Workbench: Windows/6.3.10
MySQL Workbench 不读取 ini 文件,因此不使用其中的任何值。既然可以同时连接多台服务器,怎么办?
MySQL Workbench 对客户端和连接字符集 (utf-8) 使用固定编码。
直到版本 8.0.11 RC MySQL Workbench 实际上使用了 utf8mb3 字符集。从该版本开始,它切换到 utf8mb4.
我一直在关注 this tutorial 如何为 unicode 设置 MySQL server/database,希望将默认字符集设置为 utf8mb4
,以及 utf8mb4_unicode_ci
就像教程中指定的一样,我在位于 C:\ProgramData\MySQL\MySQL Server 5.7 的 .ini 文件中应用了以下设置:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
当 运行 这个查询在 MySql Workbench:
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'
它没有显示我期望的系统变量,所以最初我以为我错误配置了服务器:
MySql Workbench 输出
character_set_client utf8
character_set_connection utf8
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8
character_set_server utf8mb4
character_set_system utf8
collation_connection utf8_general_ci
collation_database utf8mb4_unicode_ci
collation_server utf8mb4_unicode_ci
但是,当使用本机 MySQL 命令行客户端时,我看到了我所期望的:
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
为什么 MySql Workbench 不像命令行客户端那样遵守配置设置?
MySql: Windows/5.7.21
MySql Workbench: Windows/6.3.10
MySQL Workbench 不读取 ini 文件,因此不使用其中的任何值。既然可以同时连接多台服务器,怎么办?
MySQL Workbench 对客户端和连接字符集 (utf-8) 使用固定编码。
直到版本 8.0.11 RC MySQL Workbench 实际上使用了 utf8mb3 字符集。从该版本开始,它切换到 utf8mb4.