博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DBCP针对不同数据库的validationQuery
阅读量:6439 次
发布时间:2019-06-23

本文共 2730 字,大约阅读时间需要 9 分钟。

  hot3.png

Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=ECBSHIS.DUAL, DRIVER=4.22.29)	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)	at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:141)	at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:301)	at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:214)	... 69 moreCaused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=ECBSHIS.DUAL, DRIVER=4.22.29	at com.ibm.db2.jcc.am.ld.a(ld.java:810)	at com.ibm.db2.jcc.am.ld.a(ld.java:66)	at com.ibm.db2.jcc.am.ld.a(ld.java:140)	at com.ibm.db2.jcc.am.up.c(up.java:2796)	at com.ibm.db2.jcc.am.up.d(up.java:2784)	at com.ibm.db2.jcc.am.up.a(up.java:2212)	at com.ibm.db2.jcc.t4.bb.i(bb.java:148)	at com.ibm.db2.jcc.t4.bb.b(bb.java:41)	at com.ibm.db2.jcc.t4.p.a(p.java:32)	at com.ibm.db2.jcc.t4.vb.i(vb.java:145)	at com.ibm.db2.jcc.am.up.lb(up.java:2181)	at com.ibm.db2.jcc.am.up.a(up.java:3300)	at com.ibm.db2.jcc.am.up.a(up.java:717)	at com.ibm.db2.jcc.am.up.executeQuery(up.java:696)	at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)	at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)	at org.apache.commons.dbcp.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:658)	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1558)	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)	... 74 more

解决方法:

DBCP针对不同数据库的validationQuery 当你使用DBCP连接池时,你可以通过设置testOnBorrow和testOnReturn属性测试这个连接是否可用。不幸的是你还需要设置validationQuery才能起作用。那么问题来了如何设置validationQuery这个值呢?

什么是validationQuery validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句,下表中收集了几种常见数据库的validationQuery。

    • DataBase validationQuery
    • hsqldb select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
    • Oracle select 1 from dual
    • DB2 select 1 from sysibm.sysdummy1
    • MySql select 1
    • Microsoft SqlServer select1
    • postgresql select version()
    • ingres select 1
    • derby values 1
    • H2 select 1

根据JDBC驱动获取validationQuery 如果你想支持多种数据库,你可以根据JDBC驱动来获取validationQuery,这里有个简单的类,根据JDBC驱动名称来获取validationQuery

转载于:https://my.oschina.net/saulc/blog/1785825

你可能感兴趣的文章
PyODPS开发中的最佳实践
查看>>
java9系列(四)Process API更新
查看>>
小知识九、常见问题
查看>>
什么仇什么怨?游戏上线日程序员“锁库跑路”,致公司破产解散
查看>>
Vue.js开发常见问题
查看>>
解析分布式锁之Zookeeper实现(一)
查看>>
多迪就业数据显示:Java和Php哪个更利于就业?更有前景?
查看>>
Android-用style修改AlertDialog修改按钮文字颜色
查看>>
HBase Major Compaction 原理精讲与参数设置建议剖析
查看>>
React全家桶构建一款Web音乐App实战(六):排行榜及歌曲本地持久化
查看>>
Android ORM 框架:GreenDao 使用详解(基础篇)
查看>>
这次给大家带来复杂点的ajax请求该如何破?
查看>>
如果你的网站没有JavaScript
查看>>
Android跨进程组件IPCInvoker用法完全解析
查看>>
JAVA集合(二、LinkHashMap)
查看>>
前端性能优化
查看>>
安卓手机软键盘弹出后不响应onKeyDown、onBackPressed方法解决方案
查看>>
Nginx-RTMP推流(audio)
查看>>
iOS性能优化 - 工具Instruments之CoreAnimation
查看>>
linux性能优化学习笔记-pidstat
查看>>