MySQL Workbench 不考虑配置的字符集 utf8mb4

Posted

技术标签:

【中文标题】MySQL Workbench 不考虑配置的字符集 utf8mb4【英文标题】:MySQL Workbench not respecting configured charset utf8mb4 【发布时间】:2018-10-03 20:08:17 【问题描述】:

我一直在关注this tutorial,了解如何为 unicode 设置 mysql 服务器/数据库,希望将默认字符集设置为 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 工作台输出

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.21MySql Workbench:Windows/6.3.10

【问题讨论】:

【参考方案1】:

    MySQL Workbench 不读取 ini 文件,因此不使用其中的任何值。既然可以同时连接多台服务器,那又如何呢?

    MySQL Workbench 对客户端和连接字符集 (utf-8) 使用固定编码。

    直到版本 8.0.11 RC MySQL Workbench 实际使用 utf8mb3 字符集。从那个版本开始,它切换到 utf8mb4。

【讨论】:

很高兴知道 - 有趣的是,这不在 Workbench 的发行说明中 你是对的。不知何故,这个开关滑过了。我们将在 GA 发行说明中包含它。 我在 Mint 19 (Ubuntu 18.04) 上安装了 MySQL Workbench 8.0.12 并查看 @@character_set_client == utf8 (不是 utf8mb4)。更新到 8.0.13 没有任何改变

以上是关于MySQL Workbench 不考虑配置的字符集 utf8mb4的主要内容,如果未能解决你的问题,请参考以下文章

MySQL Workbench 字符集

MySQL-WorkBench修改MySQL配置注意事项

使用 MySQL Workbench 6.2 将 HSQLDB 迁移到 MySQL

Ubuntu20.04安装MySQL及配置MySQL workbench

Ubuntu20.04安装MySQL及配置MySQL workbench

ansys workbench吃啥硬件