OceanBase客户端连接字符集

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】4.2.3.1
【 使用版本 】4.2.3.1
【问题描述】使用obclient或mysql登录后show variables like “%char%”;显示character_set_client,character_set_connection,character_set_results均为latin1

+--------------------------------------+---------+
| Variable_name                        | Value   |
+--------------------------------------+---------+
| character_set_client                 | latin1  |
| character_set_connection             | latin1  |
| character_set_database               | utf8mb4 |
| character_set_filesystem             | binary  |
| character_set_results                | latin1  |
| character_set_server                 | utf8mb4 |
| character_set_system                 | utf8mb4 |
| validate_password_special_char_count | 0       |
+--------------------------------------+---------+

OB默认字符集不是utf8mb4吗,我看文档上这几个参数默认值也是utf8mb4,怎么全局修改啊?
我使用SET global character_set_client = utf8mb4;
SET global character_set_results = utf8mb4;
SET global character_set_connection = utf8mb4;
set session character_set_client=‘utf8mb4’ ;
set session character_set_connection =‘utf8mb4’;
set session character_set_results =‘utf8mb4’;都不行,重新连接就恢复了。

租户是那个租户?创建命令发下?show create tenant sys;

你好 你的客户端的配置事latin1,客户端的字符集要和生产一致就ok了

检查一下你的客户端的my.cnf
[client]
default-character-set = latin1

±-------------------------±--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb4 |
±-------------------------±--------+

这个是client侧的字符集问题。先确认一下环境变量LANG的值

echo $LANG

尝试改成UTF8以后,再启动mysql客户端或者obclient

export LANG=en_US.UTF-8

mysql or obclient ...
2 个赞

如楼上所说,你这里是客户端环境变量的问题,重新设置下LANG就可以了,

1.服务器会话设置
LANG=en_US.UTF-8

2.重新登录
obclient……

3.再次查看
show variables like “%char%”

租户charset都是utf8mb4

这个可以了