Ich verwende den DBCP-Pool und möchte mit testOnBorrow und testOnReturn testen, ob die Verbindung noch gültig ist.
Leider muss ich die Eigenschaft validationQuery festlegen, damit es funktioniert.
Frage: Welcher Wert sollte in validationQuery sein?
Ich weiß, dass: validationQuery eine SQL SELECT-Anweisung sein muss, die mindestens eine Zeile zurückgibt.
Problem ist, dass wir verschiedene Datenbanken verwenden (DB2, Oracle, hsqldb).
Antworten:
Es gibt nicht nur eine Validierungsabfrage für alle Datenbanken. Für jede Datenbank müssen Sie eine andere Validierungsabfrage verwenden.
Nach ein paar Stunden googeln und testen habe ich diese Tabelle gesammelt:
DatenbankvalidierungQuery-Notizen
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
select 1 from dual
select 1 from sysibm.sysdummy1
select 1
select 1
(getestet auf SQL-Server 9.0, 10.5 [2008])select 1
select 1
values 1
select 1
select 1 from rdb$database
Ich habe darüber in meinem Blog geschrieben - Validierungsabfrage für verschiedene Datenbanken .
Im Voraus gibt es ein Beispiel für eine Klasse, die validationQuery gemäß JDBC-Treiber zurückgibt.
Oder hat jemand eine bessere Lösung?
quelle
select 1
funktioniert auch für Microsoft SQL Server 2014 - 12.0.2000.8 (X64), 20. Februar 2014, 20:04:26 Uhr, Standard Edition (64-Bit) unter Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)select 1
für Hive und ImpalaFür MySQL mit dem Connector / J-Treiber gibt es eine einfache Validierungsabfrage, die nur einen Ping an den Server sendet und eine Dummy-Ergebnismenge zurückgibt. Die Validierungsabfrage kann genau die folgende Zeichenfolge sein (oder sollte damit beginnen):
Weitere Informationen finden Sie unter Überprüfen von Verbindungen im MySQL- Treiberhandbuch
quelle
Für Informix lautet die Validierungsabfrage 1 aus systables
quelle