TiDB 字符集 utf8/utf8mb4 默认排序规则和MySQL不一致

Bug 反馈
清晰准确地描述您发现的问题,提供任何可能复现问题的步骤有助于研发同学及时处理问题
【 TiDB 版本】v8.5.1
【 Bug 的影响】
MySQL 5.7 迁移到TiDB的表字符集和原始表不一致, 原始表为utf8_general_ci , 迁移到TiDB后为utf8_bin, 导致两边select 结果不一样。

【可能的问题复现步骤】
MySQL 5.7 建表
CREATE TABLE t2025032501 (
id int(11) NOT NULL,
name varchar(255) DEFAULT NULL,
c_int int(11) NOT NULL,
c_varchar varchar(20) NOT NULL,
c_int2 int(11) NOT NULL,
c_varchar2 varchar(20) NOT NULL,
c_int1 int(11) DEFAULT NULL,
sfsfsdfsd varchar(10) DEFAULT NULL,
PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */,
KEY indx_1 (c_int1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

使用dm 迁移到TIDB为

CREATE TABLE t2025032501 (
id int(11) NOT NULL,
name varchar(255) DEFAULT NULL,
c_int int(11) NOT NULL,
c_varchar varchar(20) NOT NULL,
c_int2 int(11) NOT NULL,
c_varchar2 varchar(20) NOT NULL,
c_int1 int(11) DEFAULT NULL,
sfsfsdfsd varchar(10) DEFAULT NULL,
PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */,
KEY indx_1 (c_int1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8mb4_bin;
【看到的非预期行为】
CREATE TABLE t2025032501 (
id int(11) NOT NULL,
name varchar(255) DEFAULT NULL,
c_int int(11) NOT NULL,
c_varchar varchar(20) NOT NULL,
c_int2 int(11) NOT NULL,
c_varchar2 varchar(20) NOT NULL,
c_int1 int(11) DEFAULT NULL,
sfsfsdfsd varchar(10) DEFAULT NULL,
PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */,
KEY indx_1 (c_int1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8mb4_bin;

【期望看到的行为】
CREATE TABLE t2025032501 (
id int(11) NOT NULL,
name varchar(255) DEFAULT NULL,
c_int int(11) NOT NULL,
c_varchar varchar(20) NOT NULL,
c_int2 int(11) NOT NULL,
c_varchar2 varchar(20) NOT NULL,
c_int1 int(11) DEFAULT NULL,
sfsfsdfsd varchar(10) DEFAULT NULL,
PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */,
KEY indx_1 (c_int1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

【相关组件及具体版本】

【其他背景信息或者截图】
如集群拓扑,系统和内核版本,应用 app 信息等;如果问题跟 SQL 有关,请提供 SQL 语句和相关表的 Schema 信息;如果节点日志存在关键报错,请提供相关节点的日志内容或文件;如果一些业务敏感信息不便提供,请留下联系方式,我们与您私下沟通。

TiDB utf8/utf8mb4 的默认排序规则和MySQL不一致。

MySQL为 utf8_general_ci/utf8mb4_general_ci
TiDB 为 utf8_bin/utf8mb4_bin

这算是一个新的需求,目前是符合预期的情况, 我放到产品需求里面来。

你可能先看有沒有設置 collation_compatible

666 DM 可以通过这个解决, 全量传输的话mydumper 和dumpling 解决不了

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