2016-02-27 65 views
0

我想將我的MySQL服務器字符集和排序規則從latin1更改爲UTF8。我研究了一下,看起來這是通過「my.cnf」文件完成的,該文件需要位於MySQL讀取配置選項的文件夾中。我的my.cnf文件沒有在我的Mac(OSX Yosemite,MySQL 5.7),按照指令將示例之一複製到「/ etc」。無法使用my.cnf更改mysql服務器排序規則

裏面,我創建的條目爲MySQL客戶端後,mysqld和mysql服務器就像這樣:

# 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) 

我能做些什麼來改變它呢?或者我應該保持原樣並在創建時將其設置爲db級別?

回答

1

首先,請記住,你把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;