Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie setze ich das Verbindungstimeout in groovy sql?

Groovy SQL steuert das Timeout nicht, das liegt an Ihrem Treiber (in Ihrem Fall Oracle). Wenn Sie eine Zeitüberschreitung für eine Abfrage festlegen möchten, sehen Sie sich diese Antwort an .

Wenn Sie eine Verbindungsebeneneinstellung wünschen (damit Sie das SQL-Objekt für mehrere Abfragen mit jeweils angewendetem Timeout wiederverwenden können), müssen Sie Ihre eigene Verbindung einrichten und an die SQL-Fassade von Groovy übergeben. So

def dev_env = [
  url:"jdbc:oracle:thin:@//aguat:1521/orcl",
  user:"ricky",
  password:"ricky",
  driver:"oracle.jdbc.OracleDriver"
]
Class.forName(dev_env['driver'])
def conn = DriverManager.getConnection(dev_env['url'], dev_env['user'],dev_env['password'])
conn.setNetworkTimeout(null, 10000)
def sql = new Sql(conn)

Beachten Sie setNetworkTimeout() -Methode wurde in Java 7 hinzugefügt. Wenn Sie eine ältere Version von Java verwenden, sehen Sie sich diese Antwort (Sie können "oracle.jdbc.OracleDriver" verwenden anstelle von OracleConnection.CONNECTION_PROPERTY_THIN_NET_CONNECT_TIMEOUT Feld, das in der Antwort erwähnt wird, wenn Sie eine Kompilierungsabhängigkeit von Oracle-Jars vermeiden möchten).

Da Sql von Groovy keine der Verbindungseinstellungen ändert oder steuert, ist das Standard-Timeout wieder das, was auch immer der Standardwert für Oracles Treiber ist.