Druid连接,事务控制开启,commit的时候报connection holder is null
具体报错信息:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我今天也出这个问题了。。
springboot 配置的读写分离。
从日志上来看,发生错误的时候,明明上下文显示切换到了主库,然后执行update就报数据库只读错误。
异常堆栈显示也是 connection holder is null。
版本:1.1.9
升级以后还是这个问题的!路过!
是否存在跨线程使用链接?同时建议升级到最新版本
http://repo1.maven.org/maven2/com/alibaba/druid/1.0.18/