Mysql
 sql >> Base de données >  >> RDS >> Mysql

PreparedStatement n'expirera jamais même s'il est explicitement défini

Appelez Connection.setNetworkTimeout() dans un essai-enfin .

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 {
   ...
}

Vous souffrez d'un trafic TCP non reconnu, qui peut bloquer une connexion si un délai d'expiration du réseau n'est pas défini.