DBCP针对不同数据库的validationQuery
生活随笔
收集整理的這篇文章主要介紹了
DBCP针对不同数据库的validationQuery
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
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 more Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=ECBSHIS.DUAL, DRIVER=4.22.29at 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
總結
以上是生活随笔為你收集整理的DBCP针对不同数据库的validationQuery的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue 开发一个按钮组件
- 下一篇: 10-python-字典