oceanbase jdbc连接报错 The server time_zone 'GMT+08:00' defined in the 'serverTimezone' parameter cannot be parsed

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】OceanBase 4.2.5.3 (r103020032025042910-d7e41ea83305933e2cad3ac6c0584f557851f27b) (Built Apr 29 2025 11:23:53)
【问题描述】

Caused by: java.sql.SQLTransientConnectionException: (conn=3221498809) The server time_zone 'GMT+08:00' defined in the 'serverTimezone' parameter cannot be parsed by java TimeZone implementation. See java.util.TimeZone#getAvailableIDs() for available TimeZone, depending on your JRE implementation.
e[2Khis-server-ob  | 	at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:128)
e[2Khis-server-ob  | 	at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:225)
e[2Khis-server-ob  | 	at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.loadCalendar(AbstractConnectProtocol.java:1519)
e[2Khis-server-ob  | 	at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.postConnectionQueries(AbstractConnectProtocol.java:1037)
e[2Khis-server-ob  | 	at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:638)
e[2Khis-server-ob  | 	at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1732)
e[2Khis-server-ob  | 	... 51 more
e[2Khis-server-ob  | Caused by: java.sql.SQLException: ORA-01882: timezone region 'Z' not found
e[2Khis-server-ob  | 	at com.oceanbase.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:2366)
e[2Khis-server-ob  | 	at com.oceanbase.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:2229)
e[2Khis-server-ob  | 	at com.oceanbase.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:2117)
e[2Khis-server-ob  | 	at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.loadCalendar(AbstractConnectProtocol.java:1492)
e[2Khis-server-ob  | 	... 54 more

datasource:
url: jdbc:oceanbase://192.168.31.13:2881/HERENDH?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&compatible-mode=oracle
username: xj_hrsj@xj_his_test
password:
driver-class-name: com.oceanbase.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
hikari:
connection-timeout: 30000
maximum-pool-size: 20

使用client 版本

com.oceanbase
oceanbase-client
2.4.13

试了网上搜到推荐的解决方案包括 强制指定 JVM 默认时区JDBC URL 中指定 serverTimezone 参数都不成功,没有dba权限,不能 修改数据库时区设置

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

3 个赞

对于您提到的 OceanBase JDBC 连接时区配置错误 ‘GMT+08:00’ 导致连接失败的问题,虽然 obdiag 目前并没有专门针对时区配置错误的场景,但我们可以先尝试通过日志采集来查看是否存在与时区设置有关的错误信息,这样有助于我们进一步了解问题的根源。您可以尝试使用以下命令来收集相关信息:

日志采集场景: SQL 执行出错
日志采集命令: obdiag gather scene run --scene=observer.sql_err --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dtest’, trace_id=‘Yxx’}”

请您按照上述命令执行日志采集,并将生成的日志文件提供给我们,以便于我们能够更准确地定位问题。

同时,为了更好地理解并解决问题,麻烦您提供一些额外的信息:

  1. 您使用的 OceanBase 版本是什么?
  2. 您的 JDBC 连接字符串中是如何设置时区参数的?能否提供一个示例?
  3. 是否在其他时区设置下可以正常连接?
  4. 在连接失败的情况下,是否可以从数据库或应用程序日志中看到具体的错误信息?

这些问题的答案将帮助我们更快地找到解决方案。感谢您的配合!

附上敏捷诊断工具 obdiag 使用帮助链接

1 个赞

我怎么感觉你在乱写??

试一下以下几种:
serverTimezone=Asia%2FShanghai
serverTimezone=GMT%2B08
serverTimezone=GMT%2B0800

2 个赞

这三种写法都试验了,还是不行

2 个赞

以前出现过类似的问题,稍等这边先咨询一下

1 个赞

:grinning::grinning::grinning::grinning::grinning:

1 个赞

set global time_zone=’+8:00’;
重启应用再试试

1 个赞

搞定了,这几天试验了n种方案了,山穷水尽的时候发现是 jdk的问题,之前用的1panel带的docker里的bitnami/jdk,弃用docker改用命令行试运行了下用系统装的jdk跑起来了

1 个赞

语法格式错误吧?

看样子你是用的 oracle 模式,我很好奇,为啥这次大佬没有直接让你联系客户经理呢? :smiling_face_with_three_hearts:

大佬偶尔也要偷偷鸡 :joy:

1 个赞