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

La connexion de la base de données à MySQL expire même après avoir défini c3p0.testConnectionOnCheckout=true

Nous avons commencé à rencontrer le même problème de « Lien de communication » lorsque nous avons mis à niveau la mise en veille prolongée vers la version 4.3.x en utilisant JPA et C3P0 pour le regroupement des connexions.

Il semble que ce serait un problème de pool de connexions puisque les connexions étaient conservées plus longtemps que la base de données wait_timeout (qui était la valeur par défaut de 8 heures) malgré mes paramètres C3P0. Cependant, j'ai résolu le problème en modifiant la configuration d'hibernation dans notre persistence.xml avec :

<property name="hibernate.connection.release_mode" value="after_transaction" />

Il semble que le comportement par défaut dans hibernate ait changé pour ne pas libérer la connexion après les transactions, vous devez donc définir explicitement ce mode si vous utilisez le pooling.