我想将我的MySQL服务器字符集和排序从latin1更改为UTF8。我研究了一下,似乎这是通过" my.cnf"需要在MySQL中读取您输入的配置选项的文件夹中的文件。我没有" my.cnf文件"在我的Mac(OSX Yosemite,MySQL 5.7)上,按照说明我将示例1复制到' / 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)
我该怎么做才能改变它?或者我应该保持原样并在创建时将其设置为数据库级别?
答案 0 :(得分:0)
首先,请记住,您放入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;