Druid连接,事务控制开启,commit的时候报connection holder is null

发布于 2022-01-07 14:28:36 字数 3207 浏览 795 评论 3

具体报错信息:

java.sql.SQLException: connection holder is null
    at com.alibaba.druid.pool.DruidPooledConnection.checkState(DruidPooledConnection.java:1090) ~[druid-1.0.11.jar:1.0.11]
    at com.alibaba.druid.pool.DruidPooledConnection.commit(DruidPooledConnection.java:712) ~[druid-1.0.11.jar:1.0.11]
    at com.zr.dataservice.server.db.DBbean.WithTransactionReturn(DBbean.java:168) [JGDataServer_Lab.jar:?]
    at com.zr.dataservice.server.job.LabDataLoaderJob$1.run(LabDataLoaderJob.java:152) [JGDataServer_Lab.jar:?]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_71]
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source) [?:1.8.0_71]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) [?:1.8.0_71]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:1.8.0_71]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_71]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_71]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_71]
Caused by: java.sql.BatchUpdateException: ORA-03106: 致命的双工通信协议错误

    at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10070) ~[ojdbc6-11.jar:11.2.0.1.0]
    at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:213) ~[ojdbc6-11.jar:11.2.0.1.0]
    at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeBatch(DruidPooledPreparedStatement.java:559) ~[druid-1.0.11.jar:1.0.11]
    at com.zr.dataservice.server.service.lab.LabDAO.executeAndCommit(LabDAO.java:250) ~[JGDataServer_Lab.jar:?]
    at com.zr.dataservice.server.service.lab.LabDAO.batchInsert(LabDAO.java:222) ~[JGDataServer_Lab.jar:?]
    at com.zr.dataservice.server.service.lab.ProcessLoader.loadBatch(ProcessLoader.java:47) ~[JGDataServer_Lab.jar:?]
    at com.zr.dataservice.server.job.LabDataLoaderJob$1.lambda$0(LabDataLoaderJob.java:153) ~[JGDataServer_Lab.jar:?]
    at com.zr.dataservice.server.db.DBbean.WithTransactionReturn(DBbean.java:167) ~[JGDataServer_Lab.jar:?]
    ... 8 more

Druid的版本是1.0.11,配置是这样

<driverClassName>oracle.jdbc.driver.OracleDriver</driverClassName>
    <initialSize>6</initialSize>
    <MaxActive>6</MaxActive>
    <maxWait>6</maxWait>
    <validateQuery>select 1 from dual</validateQuery>
    <removeAbandoned>false</removeAbandoned>
    <removeAbandonedTimeout>1800</removeAbandonedTimeout>

具体业务就是在一个preparestatment执行exeuteBatch()之后,执行commit就报上面错误,哪位大神可以指点一二

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

像你 2022-01-07 21:16:48

我今天也出这个问题了。。
springboot 配置的读写分离。
从日志上来看,发生错误的时候,明明上下文显示切换到了主库,然后执行update就报数据库只读错误。
异常堆栈显示也是 connection holder is null。
版本:1.1.9

孤檠 2022-01-07 16:46:21

升级以后还是这个问题的!路过!

无声静候 2022-01-07 16:43:20

是否存在跨线程使用链接?同时建议升级到最新版本
http://repo1.maven.org/maven2/com/alibaba/druid/1.0.18/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文