[英]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.