Maison >base de données >tutoriel mysql >Pourquoi mon serveur MySQL continue-t-il de dire « Erreur générale : le serveur MySQL 2006 a disparu » ?

Pourquoi mon serveur MySQL continue-t-il de dire « Erreur générale : le serveur MySQL 2006 a disparu » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-29 18:21:47401parcourir

Why Does my MySQL Server Keep Saying

MySQL Server a disparu : plongée dans l'énigme « Erreur générale : 2006 »

Lors de l'exécution d'insertions groupées dans une base de données MySQL, le La redoutable erreur « SQLSTATE[HY000] : Erreur générale : 2006 MySQL Server has gone away » peut faire surface. Ce problème apparemment insaisissable entrave le bon déroulement des opérations de base de données. Pour percer ses secrets, nous nous engageons dans un voyage pour comprendre cette erreur énigmatique et explorer des solutions potentielles.

Dévoilement de la cause cachée : le délai d'attente

Le "serveur MySQL a l'erreur disparue" provient souvent d'une limitation de délai d'attente. Plus précisément, il provient de la variable MySQL nommée wait_timeout. Cette variable détermine le temps (en secondes) pendant lequel MySQL attendra patiemment l'activité du client avant de mettre fin à la connexion.

Par défaut, wait_timeout est défini sur 30 secondes sur les hôtes partagés. Cependant, lorsqu'une opération de base de données dépasse ce délai, la connexion est brusquement interrompue, entraînant l'erreur susmentionnée.

Résoudre le problème : ajuster wait_timeout

Pour résoudre ce problème problème, nous devons prolonger le temps d'attente pour s'adapter à la durée de fonctionnement de notre base de données. Ceci peut être réalisé en émettant la requête « SET session wait_timeout=28800 », qui définit le délai d'attente pour la session en cours à 28 800 secondes (8 heures).

Considérations supplémentaires : délai d'attente interactif

Dans certains scénarios, vous devrez peut-être également modifier la variable interactive_timeout à côté de wait_timeout. Cette variable contrôle la durée maximale des connexions interactives inactives. Si interactive_timeout est inférieur au temps d'exécution de l'opération, la connexion sera brusquement fermée, entraînant la même erreur.

Implémentation : Code PHP

Pour implémenter cette solution dans PHP, utilisez l'exemple de code suivant :

<code class="php">$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);
echo "<pre class="brush:php;toolbar:false">";
var_dump($results);
echo "
"; $results = $db->query("SET session wait_timeout=28800", FALSE); // UPDATE - this is also needed $results = $db->query("SET session interactive_timeout=28800", FALSE); $results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE); echo "
";
var_dump($results);
echo "
";

Avant d'exécuter votre opération de base de données, ajoutez ces lignes à votre script PHP pour ajuster les paramètres de délai d'attente. Cela permet à l'opération de se terminer sans rencontrer l'erreur « Le serveur MySQL est parti ».

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