【发布时间】:2015-09-05 13:51:22
【问题描述】:
我一直在尝试各种配置来强制将字符集和排序规则转换为 utf8。但是,我尝试的一切都失败了,并且某些设置反映了拉丁字符集或排序规则。
这是来自 IUS 存储库的 CentOS 6 上的 MySQL 5.6。
我在 /usr/share/mysql/my.cnf 上的配置
# The MySQL server
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
通过 Heidi 设置
来自 MySQL 客户端
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
mysql> show variables like 'coll%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
我在 5.1 中没有任何问题。
更新 #1
我已将default-character-set = utf8 放入my.cnf 的client、mysqld 和mysql 部分并重新启动MySQL 服务。还是一样的东西,混合了拉丁文和 utf8。
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> show variables like 'coll%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
更新 #2
我的问题与通过 MySQL Workbench 使用迁移向导迁移数据库有关。生成的数据库具有我不想要的排序规则和字符集。如果我通过 Heidi 运行生成的脚本,我会得到与迁移结果相同的结果。
【问题讨论】:
标签: mysql utf-8 character-encoding