Maison >base de données >tutoriel mysql >Pourquoi ma connexion MySQL continue-t-elle à s'interrompre avec l'erreur « MySQL Server Has Gone Away » ?

Pourquoi ma connexion MySQL continue-t-elle à s'interrompre avec l'erreur « MySQL Server Has Gone Away » ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-19 12:49:02597parcourir

Why Does My MySQL Connection Keep Dropping with the

Comprendre l'erreur « MySQL Server Has Gone Away »

Lorsque vous travaillez avec des scripts qui exécutent des instructions répétitives préparées par PDO, il est possible de rencontrer un erreur indiquant "Le serveur MySQL a disparu." Cette erreur survient souvent après un certain nombre d'exécutions réussies, notamment dans les environnements avec MySQL version 5.0.77 et PHP version 5.2.12.

Cause de l'erreur :

La cause première de ce problème réside dans le dépassement de la taille maximale des paquets autorisée par le serveur MySQL. Par exemple, lors de l'insertion d'objets BLOB volumineux, la taille du paquet peut dépasser la limite configurée.

Message d'erreur dans les journaux client et serveur :

Côté client, le l'erreur se manifeste par "Le serveur MySQL a disparu." Dans le journal du serveur (si la journalisation des erreurs est activée), vous pouvez voir le message suivant :

Error 1153 Got a packet bigger than 'max_allowed_packet' bytes

Résolution :

Pour corriger cette erreur, vous devez ajustez le paramètre max_allowed_packet dans votre fichier de configuration MySQL (my.ini ou similaire). Voici comment :

  1. Identifiez la taille maximale des objets BLOB que vous prévoyez d'insérer.
  2. Ouvrez le fichier de configuration MySQL et localisez la section [mysqld].
  3. Ajouter la ligne suivante à la section :
max_allowed_packet = [SIZE]

où [SIZE] est la taille maximale souhaitée du paquet en octets. Par exemple, pour définir la taille maximale des paquets à 200 Mo :

[mysqld]
...
max_allowed_packet = 200M
...
  1. Enregistrez le fichier de configuration et redémarrez MySQL.

Considérations supplémentaires :

  • Vérifiez que vous avez correctement fermé toutes les connexions ouvertes ou préparé les déclarations après use.
  • Si vous continuez à rencontrer des problèmes, vérifiez d'autres paramètres MySQL tels que net_write_timeout et connect_timeout.
  • Envisagez de passer à une version plus récente de MySQL et PHP, car ils peuvent fournir une gestion plus robuste de gros paquets de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn