簡體   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