具体报错信息:
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就报上面错误,哪位大神可以指点一二
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
是否存在跨线程使用链接?同时建议升级到最新版本<spanstyle="font-family:Verdana,sans-serif,宋体;font-size:13.3333px;background-color:#FFFFFF;">http://repo1.maven.org/maven2/com/alibaba/druid/1.0.18/升级以后还是这个问题的!路过!
我今天也出这个问题了。。
springboot配置的读写分离。
从日志上来看,发生错误的时候,明明上下文显示切换到了主库,然后执行update就报数据库只读错误。
异常堆栈显示也是connectionholderisnull。
版本:1.1.9