我一直在尝试各种配置来强制将字符集和排序设置为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
放在client
的{{1}},mysqld
和mysql
部分,并重新启动了MySQL服务。同样的事情,拉丁和utf8的混合。
my.cnf
更新#2
我的问题与使用迁移向导通过MySQL Workbench迁移数据库有关。生成的数据库包含我不想要的排序规则和字符集。如果我通过Heidi运行生成的脚本,我会得到与迁移结果相同的结果。
答案 0 :(得分:0)
init-connect
(或其他root
用户身份)进行连接时, SUPER
会被忽略。
在my.cnf
(my.ini
)个文件中,将其添加到[mysql]
或[client]
下:
default-character-set = utf8
(我不知道Heidi是否会覆盖它 - 了解它是如何进行“连接”的。)
<强>附加物强>
character_set_database和_server不一定是个问题。 _client, connection 和_results用于说明客户端中的字节是如何编码的。您可以在CHARACTER SET utf8
中添加CREATE TABLE
来说明该表格包含的内容。
除了您展示的设置外,您对乱搞文本有什么症状?使用非英文文本的列进行此操作:
SELECT col, HEX(col) FROM ... WHERE ...
显示实际存储的内容。
答案 1 :(得分:0)
我最终在生成的脚本中编写了我想要的排序规则和字符集。
即。在创建数据库并添加列时,在必要时指定排序规则和字符集,utf8_unicode_ci,utf8 ......