Lors de l'exécution de requêtes dans le serveur MySQL, l'erreur « MySQL est parti » peut se produire. La principale raison de cette erreur est que le serveur a détecté un délai d'expiration et a fermé la connexion. Cela se produit lorsque vous essayez d'exécuter des requêtes volumineuses contenant des instructions INSERT ou REPLACE qui prennent beaucoup de temps à s'exécuter. Cependant, de nombreuses autres raisons peuvent entraîner cette erreur dans MySQL. Dans cet article, nous aborderons les causes de l'erreur « MySQL a disparu » dans MySQL et les solutions pour la corriger.
Causes de l'erreur « MySQL has gone away »
Cette erreur peut se produire pour une ou plusieurs des raisons suivantes :
- Les tables MySQL sont corrompues.
- La durée du délai d'expiration dans les paramètres de délai d'expiration est trop courte.
- Les requêtes sont corrompues ou défectueuses.
- La commande « mysqladmin kill » est défectueuse.
- Une tentative d'exécution d'une requête est en cours alors qu'il n'y a pas de connexion au serveur.
- La connexion TCP/IP sur le système client/serveur a expiré.
- La reconnexion automatique n'est pas activée sur le système client.
- La connexion entre le système client et le système serveur est interrompue avant l'exécution de la commande.
- Des requêtes trop volumineuses ou désorganisées (dans le mauvais ordre) sont en cours d'exécution.
- Le serveur MySQL ne peut pas utiliser les recherches IP-nom d'hôte.
- Les paramètres du pare-feu bloquent l'application MySQL.
Méthodes pour corriger l'erreur « MySQL has gone away »
Vous trouverez ci-dessous quelques méthodes pour dépanner et résoudre l'erreur « MySQL has gone away ».
1 – Prolonger le délai d'expiration sur le serveur MySQL
L'erreur « MySQL est parti » peut se produire en raison d'une erreur de délai d'attente dans la connexion serveur/client. Le délai d'attente de connexion correspond au temps pendant lequel un client attend de recevoir une réponse du moteur de recherche du serveur. Si le serveur ne répond pas dans ce délai, la connexion est considérée comme ayant échoué en raison d'un manque d'activité. Par défaut, le serveur MySQL ferme la connexion après 8 heures si le système est inactif.
Les problèmes de délai d'expiration de connexion dans MySQL se produisent généralement lorsque vous exécutez des requêtes qui nécessitent des opérations importantes. Par exemple, vous utilisez une fonction qui peut être appelée plusieurs fois pour définir diverses opérations, telles que mysql_options(), mysql_get_options, etc. Pour éviter cela, vous pouvez augmenter la durée du délai d'expiration sur le serveur MySQL à l'aide de la commande wait_timeout.
2 – Augmenter la limite de paquets dans le serveur MySQL
L'erreur « MySQL has gone away » peut se produire si la requête envoyée au serveur est trop volumineuse et nécessite plusieurs opérations. Cependant, vous pouvez augmenter la limite de requêtes en modifiant la variable max_allowed_packet. Si le paquet est trop volumineux avec des valeurs BLOB importantes, vous pouvez augmenter la limite de paquets. Pour ce faire, exécutez la commande suivante :
$> mysqld --max_allowed_packet=128M Copier le code
REMARQUE : la limite pour max_allowed_packet est de 1 Go.
3 – Vérifiez votre connexion réseau
L'erreur « MySQL server has gone away » peut également se produire dans le cas où la connexion au serveur est interrompue. Dans ce cas, vous pouvez utiliser la commande mysql_ping() (comme indiqué ci-dessous) pour vérifier si la connexion au serveur fonctionne.
int
mysql_ping(MYSQL *mysql)
Copier le code
REMARQUE : avant d'exécuter la commande mysql_ping(), veuillez vous assurer que l'option de reconnexion automatique est désactivée sur le serveur. Dans le cas contraire, une erreur sera renvoyée.
Si la commande ci-dessus renvoie le résultat « 0 », cela signifie que le serveur est actif. Si une valeur autre que zéro s'affiche, cela indique un problème réseau. Vous pouvez résoudre les problèmes de connexion réseau.
4 – Activer l'option « skip networking »
Vous pouvez également activer la variable système « skip networking » pour résoudre les problèmes de connexion réseau dans MySQL. Cela fonctionne pour les applications qui ne concernent que des clients locaux. Par défaut, la variable « skip networking » est désactivée. Pour activer « skip networking », veuillez suivre les étapes suivantes :
- Localisez le fichier de configuration MySQL sur votre système. Le chemin d'accès par défaut est :
C:\ProgramData\MySQL\MySQL Router : C:\ProgramData\MySQL\MySQL Router\mysqlrouter.confCopier le code
- Ouvrez le fichier de configuration, localisez la section [mysqld] et ajoutez --skip-networking[={ON}].
- Redémarrez ensuite le serveur MySQL.
L'activation de la variable système « skip networking » désactive complètement la connexion TCP/IP, réduisant ainsi la charge de la connexion TCP/IP.
5 – Vérification et réparation de la base de données MySQL
Les requêtes peuvent également échouer en raison de tables ou d'index corrompus dans la base de données, ce qui entraîne l'erreur. Pour vérifier si les tables sont corrompues, vous pouvez utiliser l'instruction CHECK TABLE. Celle-ci vérifie la vue de la table et ses références, y compris les index, afin de détecter toute corruption. Si un problème est détecté, l'erreur s'affiche avec le nom de la table. Vous pouvez ensuite utiliser la commande REPAIR TABLE (comme indiqué ci-dessous) pour réparer la table de la base de données MySQL.
Remarque : pour utiliser cette commande, veuillez vous assurer que vous disposez des privilèges INSERT et SELECT pour la table.
REPAIR TABLE nom_table [options]
Si REPAIR TABLE ne produit pas les résultats escomptés, vous pouvez utiliser un outil professionnel de réparation de bases de données MySQL tel que Stellar® Repair for MySQL. Cet outil permet de réparer rapidement, complètement et précisément les tables InnoDB/MyISAM endommagées dans la base de données MySQL. Il enregistre ensuite les données réparées dans MySQL, MariaDB, SQL Script et d'autres formats de fichiers (CSV, HTML et XLS). Cet outil permet de corriger efficacement diverses erreurs liées à la corruption de la base de données MySQL. Il bénéficie du soutien pour la version 8.0.36 et les versions antérieures de MySQL, y compris les versions MariaDB jusqu'à la version 11.3.2. Il est compatible avec les systèmes d'exploitation Windows et Linux.
Conclusion
L'erreur « MySQL has gone away » peut se produire en raison de requêtes volumineuses qui prennent beaucoup de temps à charger, de problèmes de connexion réseau, d'un délai d'expiration court et de diverses autres raisons. Vous pouvez suivre les méthodes mentionnées ci-dessus pour corriger l'erreur. Si l'erreur a été causée par une corruption de la base de données, vous pouvez utiliser Stellar Repair for MySQL pour réparer la base de données. Il s'agit d'un outil fiable qui vous permet de réparer les bases de données MySQL corrompues sur les systèmes d'exploitation Windows et Linux. Vous pouvez installer la version de démonstration de l'outil pour analyser la base de données et prévisualiser les objets récupérables.




6 min read




