tidb 8.1.0重启之后 utf8mb4_general_ci 排序集的历史数据无法查询

【 TiDB 使用环境】测试环境
【 TiDB 版本】8.1.0

默认MySQL client登录之后

kfzdba@192.168.3.114:4000 11:43:  [(none)] >SELECT @@character_set_database, @@collation_database, @@character_set_connection, @@collation_connection;
+--------------------------+----------------------+----------------------------+------------------------+
| @@character_set_database | @@collation_database | @@character_set_connection | @@collation_connection |
+--------------------------+----------------------+----------------------------+------------------------+
| utf8mb4                  | utf8mb4_bin          | utf8                       | utf8_general_ci        |
+--------------------------+----------------------+----------------------------+------------------------+
1 row in set (0.00 sec)

然后目标表的字符集是 ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

目标表上目前有问题的字段的属性是 orderStatus varchar(30) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',

昨天重启TIDB server之前基于 orderStaus=‘xxxYyy’ 查询还是可以查到02-11及之前的数据。
但是今天查询就只能查询到 02-11当天的数据了。

如果在查询的时候 给where中的 orderStaus 指定排序集 collate utf8mb4_unicode_ci 就没有问题,可以查到预期的所有数据。

但是确认该表或者字段上的字符集排序集都没有修改过 。

大家有没有遇到过这样的问题呢

确认的是表及字段的字符集在重启前后都没有做过修改, 昨天是验证haproxy功能,TIDB配置添加 proxy-protocal.networks 参数然后reload了 tidb 角色, 之外都没有昨天其他变更操作

可以搞个最小案例让咱们本地试试么?

语句当中显示指定COLLATE = utf8mb4_unicode_ci 会出现问题吗?

显示指定 utf8mb4_unicode_ci 没有问题的。

奇怪的是 utf8mb4_general_ci 没有修改过,之前一直是好好的,就11号reload server之后开发反馈有问题,但是12新增的数据却能查询出来

1 个赞

我验证了,放到别的库下 unicode 就没有呢

论坛中貌似没有搜到相关的问题,你是在论坛看到的吗

做一个小的sql+demo,大家可以本地尝试,你这个描述太抽象。

1 个赞

确实,发一个可复现的demo看看,可以验证一下是不是版本问题。

目前通过重建表解决这个问题了

1 个赞

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