web-dev-qa-db-fra.com

Obtenir l'erreur MYSQL: "Code d'erreur: 2006 - Le serveur MySQL est parti"

Je reçois l'erreur suivante lorsque j'essaie d'importer une base de données MYSQL:

Error Code: 2013 - Lost connection to MySQL server during queryQuery:
Error Code: 2006 - MySQL server has gone away

Quelqu'un peut-il me faire savoir ce qui ne va pas?

22
meetpd

Ici vous pouvez en savoir plus sur cette erreur et les différentes façons de l'éviter/de la résoudre

De la docs: 

La raison la plus courante pour laquelle le serveur MySQL a disparu est que le serveur a expiré et a fermé la connexion.

9
Tudor Constantin

L'enquête montre que de nombreuses solutions parlent correctement de la définition de max_allowed_packet et de wait_timeout pour mysql dans my.cnf; petit ajout que l'installation par défaut de mysql sur mac osx ne semble pas inclure ce fichier. Vous devrez peut-être d’abord le créer dans /etc/my.cnf (c’est un problème si vous utilisez l’installation par défaut de mysql au lieu d’une pile mamp ou similaire).

contenu de /etc/my.cnf qui corrige ce problème pour moi ci-dessous:

[mysqld]
max_allowed_packet= 64M
wait_timeout= 6000
34
Rafe Hatfield

Cela se produit souvent si votre requête INSERT est une instruction trop longue comportant plusieurs lignes.

3
Bimal Poudel

Essayez de suivre les correctifs liés aux erreurs de 2006:

  • Le serveur a expiré et a fermé la connexion. Comment résoudre ce problème: vérifiez que la variable wait_timeout dans le fichier de configuration my.cnf de votre mysqld est suffisamment grande. 

  • Le serveur a abandonné un paquet incorrect ou trop volumineux. Si mysqld obtient un paquet trop volumineux ou incorrect, il suppose que quelque chose ne va pas avec le client et ferme la connexion. Vous pouvez augmenter la limite maximale de taille de paquet en augmentant la valeur de max_allowed_packet dans le fichier my.cnf.

3
CloudyMarble

J'ai essayé toutes les solutions et rien n'a fonctionné
J'utilise le plan de travail pour connecter à distance hostgator
J'ai réalisé que mysql server hostgator était la version 5.5 et que mon workbench était configuré en version 5.6.
quand j'ai réglé le plan de travail à 5.5 il a commencé à travailler 

edit/preferences/mysql/version cible par défaut
 enter image description here

2
Rafael Sudbrack

Essayez de redémarrer le serveur mysql. Il est possible que le serveur ne fonctionne pas correctement, mais que SQL notifier affiche celui-ci en cours d'exécution également.

2
andrew

il y a plusieurs raisons pour lesquelles ce problème vous arrive, ici vous pouvez trouver toutes les raisons possibles. Personnellement, je me suis heurté à la taille du paquet mais j'ai mis à jour mon fichier my.ini auparavant, j'avais vérifié la variable max_allowed_packet qui m'avait donné 1048576B = 1Mo et j'ai mis à jour la version à 5 Mo .

sélectionnez 1048576/1024/1024

sélectionnez 5242880/1024/1024

1
dennisbot

Montrez vos variables mySql 

  • affiche des variables comme 'max%'

  • set global max_allowed_packet = {PacketRANGE}; // comme ça 10485760;

  • affiche des variables globales comme 'max_all%';

Profitez de votre codage ici

1
Shaam

Dans MySQL 5.7, cette erreur peut être générée par un paquet de communication trop volumineux:

Lorsqu'un client MySQL ou le serveur mysqld reçoit un paquet supérieur à max_allowed_packet octets, il génère une erreur ER_NET_PACKET_TOO_LARGE et ferme la connexion. Avec certains clients, vous pouvez également obtenir une connexion perdue avec le serveur MySQL lors d'une erreur de requête si le paquet de communication est trop volumineux.

Un paquet dans MySQL est:

Un paquet de communication est une instruction SQL unique envoyée au serveur MySQL, une seule ligne envoyée au client ou un événement de journal binaire envoyé d'un serveur de réplication maître à un esclave.

Vous pouvez trouver le doc ici: DOC
Vous devriez essayer de définir le max_allowed_packet sur une valeur plus grande (la valeur par défaut est 4 Mo) à résoudre si votre script SQL est supérieur à cette taille. Vous pouvez définir cette valeur dans un fichier d'options afin de ne pas avoir à la configurer à chaque fois. 
Sous Microsoft Windows Vista et supérieur, vous pouvez définir max_allowed_packet dans le fichier. 
% PROGRAMDATA%\MySQL\MySQL Server 5.7\my.ini 
ou 
% PROGRAMDATA%\MySQL\MySQL Server 5.7\my.cnf

où PROGRAMDATA = C:\ProgramData 
Plus d'infos (aussi pour les autres S.O.) ICI

1
alcott80

Voici une alternative à l'édition du fichier my.cnf. Vous pouvez définir la valeur des variables globales MySQL en vous connectant au serveur MySQL.

Vous pouvez consulter la liste de toutes les variables globales MySQL et leurs valeurs avec la commande suivante:

$> mysqladmin variables -u YourMysqlUsername -p

Vous pouvez également vérifier la valeur de ces variables en vous connectant d'abord au serveur MySQL:

$> mysql -u YourMysqlUsername -p

mysql> SHOW VARIABLES;

Pour vérifier une valeur de variable spécifique:

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';

Pour résoudre MySQL Server Gone Away error, vous devez augmenter le valeur de la variable max_allowed_packet.

mysql> SET GLOBAL max_allowed_packet=1072731894;
mysql> quit

Maintenant, lorsque vous vous connectez à nouveau à MySQL et vérifiez la valeur max_allowed_packet, vous devriez voir la valeur mise à jour.

$> mysql -u YourMysqlUsername -p

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+------------+
| Variable_name      | Value      |
+--------------------+------------+
| max_allowed_packet | 1072731136 |
+--------------------+------------+
1 row in set (0.00 sec)
0
Mukesh Chapagain

AS mentionné par Tudor dans sa réaction:

 The most common reason for the MySQL server has gone away error is that the 
 server timed out and closed the connection

Vous devez modifier la durée et la durée d'exécution maximales. Vous pouvez utiliser les commandes suivantes pour le faire:

SET GLOBAL wait_timeout = 6000;
SET GLOBAL max_allowed_packet= 64M;

Ce sont des commandes SQL donc vous pouvez les exécuter comme des commandes noramal.

0
Peter verleg