将 character_set_client 的值设置为 utf8mb4

qwa*_*waz 15 mysql collation utf-8

我正在尝试将我的数据库转换为utf8mb4遵循本指南。我已经设定:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
init-connect='SET NAMES utf8mb4'
collation_server=utf8mb4_unicode_ci
character_set_server=utf8mb4
skip-character-set-client-handshake
Run Code Online (Sandbox Code Playgroud)

但价值character_set_clientcharacter_set_results仍然不会改变utf8mb4。

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8               |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8               |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_unicode_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如何将这些值设置为 utf8mb4?

Mat*_*ens 16

披露:我是How to support full Unicode in MySQL databases 的作者,这是您正在遵循的指南。

  1. 你在哪里保存修改的设置?检查从哪里mysqld加载默认选项。它通常是/etc/my.cnf如指南中所述),但在您的系统上可能会有所不同。运行以下命令找出:

    $ mysqld --help --verbose 2> /dev/null | grep -A1 'Default options'
    Default options are read from the following files in the given order:
    /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
    
    Run Code Online (Sandbox Code Playgroud)
  2. 您是否在进行更改后mysqld通过运行重新启动mysqld restart

  • 我试过了,但仍然`character_set_client`、`character_set_connection`、`character_set_results`、`collat​​ion_connection` 显示为`utf8`。任何想法为什么这不起作用? (3认同)