Modes de paiement Abuse

Ошибка 2006 : Le serveur MySQL a disparu

09.03.2021, 22:01

L'erreur 2006 appelée MySQL Sever has gone away signifie que le serveur a refusé de se connecter bien qu'il soit en cours d'exécution. Il n'y a que trois raisons connues pour lesquelles cette erreur apparaît. La première raison est que le serveur est surchargé. Le temps d'attente a expiré. La deuxième raison est que le client a envoyé un paquet trop douloureux. La troisième raison est que le serveur n'a pas été entièrement initialisé. Nous examinerons plus en détail les raisons pour lesquelles l'erreur apparaît et comment y remédier.

Comment corriger l'erreur

En général, l'erreur apparaît lorsque l'on essaie de se connecter à la base de données en utilisant PHP, le client console ou PhpMyAdmin :

PhpMyAdmin

Examinons chaque situation séparément.

Délai d'attente expiré

Comme indiqué au début de cet article, l'une des causes possibles est l'expiration du temps d'attente. Il se peut que le serveur ait été surchargé et qu'il ne puisse pas faire face à la charge - traiter toutes les connexions. Pour savoir combien de temps prennent les requêtes du serveur, vous pouvez utiliser n'importe quel client de console et vous connecter au serveur. Si vous pouvez le faire, exécutez n'importe quelle requête. Si les requêtes prennent trop de temps à traiter, vous pouvez optimiser MySQL à l'aide d'un script spécial, MySQLTuner. En général, augmentez la taille du pool du moteur InnoDB en définissant le paramètre innodb_buffer_pool_size. La valeur optimale est déterminée à l'aide du script ci-dessus.

Si elle est de 800 mégaoctets (elle peut être de n'importe quelle autre taille), définissez-la :

$ sudo vi /etc/mysql/my.cnf
innodb_buffer_pool_size=800M

https://pq.hosting/help/myfiles/mysqlhasgoneavay-991x576.png

Il existe une autre façon de résoudre le problème. Pour ce faire, le temps de réponse du serveur est augmenté. Pour ce faire, vous devez modifier le paramètre wait_timeout. Il s'agit du temps en secondes pendant lequel vous devez attendre une réponse du serveur.

Par exemple, en cas de changement, n'oubliez pas de modifier le paramètre wait_timeout :

wait_timeout=500

параметр wait_timeout

Lorsque vous effectuez des modifications, n'oubliez pas de redémarrer ensuite le serveur :

$ sudo systemctl restart mysql

Ou :

$ sudo systemctl restart mariadb

Paquet trop volumineux

Lorsque le client d'un utilisateur crée trop de paquets, le serveur génère cette erreur. La taille de paquet disponible (valeur maximale) peut être augmentée à l'aide du paramètre max_allowed_packet.

Par exemple :

$ sudo vi /etc/mysql/my.cnf
max_allowed_packet=128M

Prêtez une attention particulière au client, car s'il envoie beaucoup de requêtes, il est évident que vous faites quelque chose de mal. Au moins, ne générez pas de requêtes vers MySQL en utilisant des boucles for.

Le serveur est mal initialisé

Si vous décidez de déployer MySQL ou MariaDB dans Docker, préparez-vous à rencontrer une erreur similaire. L'initialisation du conteneur nécessite un peu plus de temps libre. Si vous ne laissez pas le conteneur terminer l'initialisation en l'arrêtant et en le démarrant d'abord, la base de données renverra toujours cette erreur. La solution consiste à supprimer complètement les données du conteneur de la base de données.

Cela se fait comme suit :

$ docker-compose down

ou :

$ docker rm mysql-container

Ensuite, vous devez supprimer le stockage (volume) contenant la base de données mal initialisée. Mais au début, regardez la liste de tous les stockages :

$ docker volume ls

СЕРВЕР НЕВЕРНО ПРОИНИЦИАЛИЗИРОВАН

Après la suppression :

$ docker volume rm volume_name

Maintenant, vous pouvez commencer à initialiser l'application, il suffit d'attendre que le serveur de base de données vous dise qu'il est prêt et que vous pouvez vous y connecter.