TiDB6.5 设置排序规则为utf8mb4_general_ci之后,如果create table语句中指定了default charset=utf8 但是没有指定排序规则 那么该表的排序规则是啥

首先回答你的问题,我认为表的排序规则是utf8_bin。关于字符集 排序规则 的 粒度 和默认值,可以看下官网文档,

实操结果是utf8_bin

SET GLOBAL collation_connection=`utf8mb4_general_ci`;
SET GLOBAL collation_database=`utf8mb4_general_ci`;
SET GLOBAL collation_server=`utf8mb4_general_ci`;

SET collation_connection=`utf8mb4_general_ci`;
SET collation_database=`utf8mb4_general_ci`;
SET collation_server=`utf8mb4_general_ci`;

SHOW VARIABLES LIKE 'collation_%';

image

CREATE TABLE `tmp_collate` (
	c_collate varchar(10) NOT NULL DEFAULT '' COMMENT '排序规则',
  	PRIMARY KEY (`c_collate`) /*T![clustered_index] CLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试排序规则';

SELECT TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME = 'tmp_collate';

image

PS: 最巧的是我本地是6.5.2,并且集群初始化的时候也开了新排序规则。 :yum:

1 个赞

utf8_bin

utf8_bin

utf8_bin

排序规则为utf8mb4_general_c

utf8_bin排序

这个之间创建表后再查看DDL定义不就有答案了么

utf8_bin

应该是utf8_bin,上面给出文档和实验的同学说的很详细

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。