sql >> Base de Datos >  >> RDS >> Mysql

PreparedStatement nunca se agotará, incluso si se establece explícitamente

Llame a Connection.setNetworkTimeout() en un intento-finalmente .

private final static Executor immediateExecutor = Runnable::run;

try ( Connection connection = pool.getConnection() ) {
   int timeout = connection.getNetworkTimeout();
   connection.setNetworkTimeout(immediateExecutor, TimeUnit.SECONDS.toMillis(5));
   ...
   try (PreparedStatement...) {
      ...
   }
   finally {
      connection.setNetworkTimeout(timeout);
   }
}
finally {
   ...
}

Está sufriendo de tráfico TCP no reconocido, que puede colgar una conexión si no se establece un tiempo de espera de la red.