暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

连接磐维关于client_encoding参数报错处理

roman 2025-11-25
118

问题描述

磐维版本: S3.2.0_B01, MySQL兼容模式
报错: The server’s client_encoding parameter was changed to UTF8MB4. The JDBC driver requires client_encoding to be UTF8 for correct operation.
报错截图:
image.png

问题排查

看报错的原因已经很明显,JDBC需要将client_encoding设置成UTF8而不是UTF8MB4。本次磐维侧已经给到指定的驱动包,测试过替换成其他驱动后也会报同样的错,继续按如下步骤排查。

检查业务侧的jdbc连接串,如下:

image.png业务侧已经在连接串里边设置跟本次问题相关的参数选项,依然报错。

数据库层面查看相关参数设置

在磐维库里边

show server_encoding;
show client_encoding;

--结果都是UTF8。

show collation_connection;

SELECT n.nspname,b.collname,pg_encoding_to_char(b.collencoding) AS encoding_name
  FROM pg_namespace n
  LEFT JOIN pg_collation b ON b.oid = n.nspcollation
 WHERE n.nspname !~ '^pg_' 
  AND n.nspname not in 
  (
  'information_schema', 'cstore','pkg_service','dbms_job','dbms_scheduler','dbms_session',
  'blockchain','dbe_perf','snapshot','dbms_utility','dbms_pipe','dbms_application_info',
  'dbms_alert','dbms_profiler_proctable','wmsys','dbms_lock','dbms_lob','dbms_rowid',
  'dbms_assert','dbe_pldeveloper','dbms_redact','sys','dbms_random','dbms_xplan',
  'sqladvisor','dbe_pldebugger','dbe_sql_util','xmltype','audit','db4ai')
ORDER BY 1;

-- show的结果和sql查询collname,encoding_name均为空,说明业务侧也没设置过collation之类的参数。

操作系统层面查看相关参数设置

用omm主机用户执行查看如下命令:

echo $LANG
echo $LC_TYPE
echo $PGCLIENTENCODING

-- LANG结果为en_US.UTF-8,其它均显示为空。

咨询业务侧

以上参数方便设置并无异议。咨询业务侧创建库的命令为create database xxx,也没有执行过alter database xxx set xxx命令。

解决

猜测可能原因是JDBC里没加utf8mb4和utf8的映射。在opengauss官方网站可以查到与本次问题相关的资料说明(https://docs.opengauss.org/zh/docs/1.0.0/docs/Developerguide/%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93-0.html)。最后在JDBC串里边加上allowEncodingChanges=true选项,重新连接后正常。
image.png

最后修改时间:2025-11-25 16:48:38
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论