web-dev-qa-db-ja.com

DBCP-さまざまなデータベースのvalidationQuery

DBCPプールを使用し、testOnBorrowおよびtestOnReturnを使用してテストする接続はまだ有効です。
残念ながら、プロパティvalidationQueryを設定して動作させる必要があります。

質問:validationQueryにはどの値が必要ですか?

ValidationQueryは、少なくとも1行を返すSQL SELECTステートメントでなければなりません。

問題は、さまざまなデータベース(DB2、Oracle、hsqldb)を使用していることです。

75
bugs_

すべてのデータベースに対して1つのvalidationQueryのみがあります。各データベースで、異なるvalidationQueryを使用する必要があります。

数時間のグーグルとテストの後、私はこの表を収集しました:

データベースの検証

  • hsqldb-select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
  • Oracle-select 1 from dual
  • DB2-select 1 from sysibm.sysdummy1
  • mysql-select 1
  • Microsoft SQL Server-select 1(SQL-Server 9.0、10.5 [2008]でテスト済み)
  • postgresql-select 1
  • Ingres-select 1
  • derby-values 1
  • H2-select 1
  • Firebird-select 1 from rdb$database

私は自分のブログでそれについて書いた- さまざまなデータベースの検証クエリ

事前に、JDBCドライバーに従ってvalidationQueryを返すクラスの例があります。

または誰かがより良い解決策を持っていますか?

184
bugs_

Connector/Jドライバーを使用するMySQLの場合、サーバーにpingを送信し、ダミーの結果セットを返す軽量の検証クエリがあります。検証クエリは、正確に次の文字列にすることができます(または最初から開始する必要があります)。

/* ping */

詳細については、MySQLドライバーマニュアルの Validating Connections を参照してください。

12
yossis

Informixの場合、検証クエリは、systablesから1を選択します

1