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