MySQL租户模式下全局修改collation_connection参数无法生效

【 使用环境 】测试环境
【 OB 】
【 使用版本 】OceanBase_CE 4.3.5.0 (r100000202024123117-5d6cb5cbc3f7c1ab6eb22e40abec8e160a8764d5) (Built Dec 31 2024 17:35:01)
【问题描述】MySQL租户模式下使用root账号连接sys或其他租户后,通过命令set global collation_connection=utf8mb4_general_ci修改collation_connection参数后不生效,重连会话也不生效。 set session collation_connection=utf8mb4_general_ci生效

能发一下 你测试的步骤么?截图看看

3 个赞

3 个赞


SHOW global VARIABLES like ‘collation_connection’; 全局修改后,全局查看下改成功没?

2 个赞

还有这个值默认不是utf8mb4_general_ci么,你是先改成utf8mb4_0900_ai_ci,再也改回来就改不回来了吗?

1 个赞

这个是我测试 看着没有问题

我又修改回去了 看着也没有问题

1 个赞

你们都是用的obclient登录的数据库,我是使用的mysql客户端,我刚试了下mysql客户端下有问题:
root@ : (none) 02:33:35> show global variables like ‘%collat%’;
±------------------------------±-------------------+
| Variable_name | Value |
±------------------------------±-------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
| default_collation_for_utf8mb4 | utf8mb4_general_ci |
±------------------------------±-------------------+
4 rows in set (0.00 sec)

root@: (none) 02:33:38> show variables like ‘%collat%’;
±------------------------------±-------------------+
| Variable_name | Value |
±------------------------------±-------------------+
| collation_connection | utf8mb4_0900_ai_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
| default_collation_for_utf8mb4 | utf8mb4_general_ci |
±------------------------------±-------------------+
4 rows in set (0.00 sec)

obclient下正常

1 个赞

JDBC连接不知道是否也会有这样的问题,排序字符集不一致,这个问题会导致字段关联查询报错

1 个赞

mysql的客户端 版本号提供一下

1 个赞

应该不会报错 可能会有索引的情况下 不走索引 导致性能问题

1 个赞

我在企业版使用mysql客户端也做了相同的测试,没有这个问题,怀疑是社区版的一个BUG

1 个赞

你用obclient,我用的mysql客户端,连上就是utf8mb4_0900_ai_ci

1 个赞

麻烦 发一下mysql客户端的版本号 mysql --version

1 个赞

mysql Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)

1 个赞

刚又去验证了下,企业版用这个版本的mysql客户端连也有这个问题

1 个赞

好的 内部复现一下 看看

1 个赞

image
我试了下你相同的mysql客户端,并未复现此问题
image
image

1 个赞

我有个初步猜测,估计你mysql客户端配置了默认的字符集。所以你说你一连接上字符集就不是ob默认的utf8mb4_general_ci 。
查下my.cnf有个这样的文件,里面是不是有
[client]
default-character-set=gbk。这样的
image

2 个赞

比如我这里例子,连接串这里可以指定,mysql有个配置文件也是可以指定的,然后不需要写在连接串里了。每次默认都是那个设置的字符集

1 个赞

是你说的这种情况,其实就是mysql 8版本utf8mb4字符集的排序规则默认是utf8mb4_0900_ai_ci