为什么Docker中的Java web不能访问Oracle数据库(thin连接方式会报错,oci方式没问题,按本文修改后,都可以访问)?所以得纪念下这个解决成果。以便后来者(菜鸟)能快速的跳出来。
先上错误代码:
java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现
ORA-01882:
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:388)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:381)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:564)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:431)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
看到这个,也是一阵的无语。在docker群里询问各种大神,可惜,基本都是玩的MySQL,有个运维大神,帮我否定了各种原因,虽然,最终也不知道是怎么回事。
解决方案:
docker exec -it 容器id /bin/bash
vim etc/timezone
把 timezone 的容器改为:
Etc/CST
停止容器,重新启动容器,浏览器访问,ok了。解决起来就是这么简单。