为什么MySQL Workbench在表编辑器中显示错误的排序规则?

64jmpszr  于 2023-05-21  发布在  Mysql
关注(0)|答案(1)|浏览(252)

我目前使用的是MySQL Workbench 8.0.21。如果我按下表编辑器窗口的扳手图标,我总是得到相同的(错误的)归类***utf8mb4_0900_ai_ci***。但这并不是表的真实的排序规则!

我相信这一定是Workbench的一个bug,因为我尝试了不同的方法:

  • 手动设置客户端的 collation_connection,但不起作用

SET NAMES utf8mb4 COLLATE utf8mb4_general_ci;
SET collation_connection = utf8mb4_general_ci;

SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'parts';正确打印 utf8mb8_general_ci

  • 尝试编辑 mysql.cnf

但同样没有效果:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
collation-server=utf8mb4_general_ci
#init-connect='SET NAMES utf8mb4 COLLATE utf8mb4_general_ci;'
init-connect='SET collation_connection = utf8mb4_general_ci;'
character-set-server=utf8mb4

There似乎不是在连接MySQL Workbench时更改默认字符集/排序规则的解决方案。
设置 default_collation_for_utf8mb4 似乎仅对复制目的有效。关闭character-set-client-handshake是否是解决我的问题的替代方案?
您是否也在Workbench中经历过这种奇怪的行为?

huwehgph

huwehgph1#

CHARACTER SET是指表示字符的位。它对于在客户机(在您的例子中是Workbench)和服务器(mysqld)之间发送(INSERTSELECT)数据非常重要。它还为每个表的每个 * 列 * 指定。
COLLATION仅在比较(WHERE)和排序(ORDER BY)时才重要。排序规则很少对其他地方产生影响。
utf8mb4的默认排序规则是utf8mb4_0900_ai_ci(适用于MySQL 8.0)。
您需要关注CHARACTER SET,否则在客户端和服务器之间发送的字符可能会被损坏。
你通常不需要担心COLLATION
SET NAMEScharacter_set_connection通过在 client 中指定编码来控制Insert/Select音译。(听起来你完全是在使用UTF-8,所以不需要转换。
是不是“错误的校对”在某个地方惹了麻烦?如果是,请具体说明。
你提到了“复制”;复制品是不是遇到了什么麻烦

相关问题