繁体   English   中英

无法使用my.cnf更改mysql服务器排序规则

[英]Cannot change mysql server collation with my.cnf

我想将我的MySQL服务器字符集和排序规则从latin1更改为UTF8。 我研究了一下,看来这是通过“ my.cnf”文件完成的,该文件必须位于一个文件夹中,MySQL将从该文件夹中读取您放入的配置选项。我的身上没有“ my.cnf文件” Mac(OSX Yosemite,MySQL 5.7),因此按照说明,我将示例一复制到了“ / etc”。

在内部,我为mysql-client,mysqld和mysql-server创建了条目,如下所示:

# For advice on how to change settings please see
# ...some stuff ...

[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> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | latin1             |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | latin1             |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_general_ci |
| collation_database       | latin1_swedish_ci  |
| collation_server         | latin1_swedish_ci  |
+--------------------------+--------------------+
10 rows in set (0.00 sec)

我该怎么做才能改变它? 还是应该在创建时将其保持原样并将其设置为数据库级别?

首先,请记住,放入my.cnf默认设置不会更改现有表的任何表定义,也不会更改已存储在这些表中的任何字符。

“数据库”的默认值必须在[mysqld]

我忽略数据库默认值,而在创建表时只是显式地:

CREATE TABLE (...) ...
    DEFAULT CHARACTER SET utf8mb4
    DEFAULT COLLATE       utf8mb4_unicode_520_ci;

那样的话,我不会被您所描述的那种错误配置所困扰。

你也可以

CREATE DATABASE ...
    DEFAULT CHARACTER SET utf8mb4
    DEFAULT COLLATE       utf8mb4_unicode_520_ci;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM