1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
RĂ©soudre une erreur MySQL (server has gone away)
Ce guide permet de résoudre une erreur de type "Invalid query: MySQL server has gone away
".
Préambule
- ce type d'erreur a souvent comme origine le fait de garder une connexion MySQL ouverte sans soumettre de requĂŞtes pendant un intervalle de temps au-delĂ duquel la connexion est close: http://dev.mysql.com/doc/refman/5.7/en/gone-away.html
- les variables wait_timeout et interactive_timeout qui contrôlent cette déconnexion sont à 30 secondes: http://dev.mysql.com/doc/refman/5.0/en/communication-errors.html
Solutions
Pour Ă©viter l'erreur "MySQL server has gone away", voici plusieurs approches possibles.
VĂ©rification et reconnexion automatique
Avant d'exécuter une requête, il est recommandé de tester si la connexion MySQL est toujours active. Si la connexion a été fermée, vous pouvez la rétablir automatiquement avant de poursuivre avec votre requête. Voici un exemple en PHP :
if (!mysqli_ping($connexion)) {
mysqli_close($connexion);
$connexion = mysqli_connect($host, $user, $password, $database);
}
La fonction mysqli_ping()
vérifie si la connexion est toujours valide. Si elle ne l'est pas, le script ferme la connexion et en ouvre une nouvelle.
Envoi de "Ping" régulier
Un autre moyen consiste à exécuter un script qui envoie régulièrement un "ping" à la base de données pour maintenir la connexion active. P.ex vous pourriez créer une tâche planifiée (cron job) qui envoie une requête légère, comme SELECT 1;
à intervalles réguliers.
Ajustement des paramètres MySQL (Serveur Cloud)
Avec un Serveur Cloud, vous pouvez augmenter les valeurs des variables wait_timeout
et interactive_timeout
depuis le menu MySQL de votre serveur pour prolonger la durée de la connexion avant qu'elle ne soit fermée.