2016-02-27 66 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;