gpt4 book ai didi

mysql - MySQL 5.6 上 utf8 排序规则和字符集的部分配置

转载 作者:行者123 更新时间:2023-11-29 22:03:14 24 4
gpt4 key购买 nike

我一直在尝试各种配置来强制字符集和排序规则为utf8。但是,我尝试的所有操作都失败了,并且某些设置反射(reflect)了拉丁字符集或排序规则。

这是来自 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进行设置

enter image description here

从 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 放入 clientmysqldmysql 部分my.cnf 并重新启动 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 运行生成的脚本,我会得到与迁移结果相同的结果。

最佳答案

当您以 root(或其他 SUPER 用户)身份连接时,

init-connect 将被忽略。

在您的 my.cnf (my.ini) 文件中,将其添加到 [mysql][client]:

default-character-set = utf8

(我不知道 Heidi 是否会覆盖它——找出它是如何“连接”的。)

附录

character_set_database 和 _server 不一定是问题。 _client、connection 和 _results 用于说明客户端中字节的编码方式。您可以通过在 CREATE TABLE 中添加 CHARACTER SET utf8 来说明表包含的内容。

除了您显示的设置之外,您还有哪些文本困惑的症状?对一些包含非英语文本的列执行此操作:

SELECT col, HEX(col) FROM ... WHERE ...

显示实际存储的内容。

关于mysql - MySQL 5.6 上 utf8 排序规则和字符集的部分配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32413819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com