ORA-01882: timezone region not found

记一次Oracle的报错,报错信息:
java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-01882: timezone region not found

当时我是把项目打包成了一个镜像部署的,然后在测试时出现了该报错。
直接百度,返现问题是Oracle的时区问题。

然后我容器停了,直接在服务器本机上运行,就没有报错了。

众所周知,Docker的容器其实就是一个微型的Linux,所以问题应该出在Docker上。

先查看服务器本机的时间:

[root@instance-tnpnvt5z ~]# date -R
Thu, 14 Oct 2021 10:11:27 +0800

时间没错。

再进入docker的容器里看时间:

[root@instance-tnpnvt5z ~]# docker exec -it cbbbf1cf4c15 /bin/bash
root@cbbbf1cf4c15:/# date -R
Thu, 14 Oct 2021 01:47:34 +0000

一看! 好家伙,这时间就有问题。

解决方案:
容器时间和宿主机同步

#在 run 时挂载宿主时间配置
-v /etc/localtime:/etc/localtime

然后重新再运行一次镜像,结果还有报错。

最后我又修改了Dockerfile的配置
在启动jar包时加了一个参数:-Duser.timezone=GMT+08

再一次重新打包,运行,测试,一切正常。没有再报错。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值