J'exécute un serveur à mon bureau pour traiter certains fichiers et rapporter les résultats à un serveur MySQL distant.
Le traitement des fichiers prend un certain temps et le processus se termine à mi-chemin avec l'erreur suivante:
2006, MySQL server has gone away
J'ai entendu parler du paramètre MySQL, wait_timeout , mais dois-je le changer sur le serveur de mon bureau ou sur le serveur MySQL distant?
mysql
mysql-error-2006
flotteur
la source
la source
max_allowed_packet
taille ou duwait_timeout
montant ne le résout pas, vérifiez votre utilisation de la mémoire. J'obtenais la même erreur et cela était dû à un manque de mémoire sur mon serveur. J'ai ajouté un fichier d'échange de 1 Go et cela l'a corrigé.Réponses:
Il peut être plus facile de vérifier la connexion et de la rétablir si nécessaire.
Voir PHP: mysqli_ping pour plus d'informations à ce sujet.
la source
Je l'ai rencontré plusieurs fois et j'ai normalement trouvé que la réponse était un paramètre par défaut très bas
max_allowed_packet
.L'augmentation de
/etc/my.cnf
(sous[mysqld]
) à 8 ou 16M le corrige généralement. (La valeur par défaut dans MySql 5.7 est4194304
, qui est de 4 Mo.)Remarque: il suffit de créer la ligne si elle n'existe pas
Remarque: cela peut être défini sur votre serveur pendant son fonctionnement.
Utilisez
set global max_allowed_packet=104857600
. Cela le définit à 100 Mo.la source
mysql.server stop
- dire ,mysql.server start
(octobre 2018, MySQL v5.7, MacOS)J'ai eu le même problème mais en changeant
max_allowed_packet
lemy.ini/my.cnf
fichier sous[mysqld]
fait l'affaire.ajouter une ligne
maintenant
restart the MySQL service
une fois que vous avez terminé.la source
J'ai utilisé la commande suivante dans la ligne de commande MySQL pour restaurer une base de données MySQL d'une taille supérieure à 7 Go, et cela fonctionne.
la source
show variables like 'max_allowed_packet';
Erreur: 2006 ( CR_SERVER_GONE_ERROR )
En général, vous pouvez réessayer de vous connecter, puis refaire la requête pour résoudre ce problème - essayez 3-4 fois avant d'abandonner complètement.
Je suppose que vous utilisez PDO. Si tel est le cas, vous interceptez l'exception PDO, incrémentez un compteur, puis réessayez si le compteur est inférieur à un seuil.
Si vous avez une requête qui provoque un délai d'attente, vous pouvez définir cette variable en exécutant:
Où 300 est le nombre de secondes que vous pensez que la durée maximale de la requête pourrait prendre.
Plus d'informations sur la façon de traiter les problèmes de connexion Mysql.
EDIT: Deux autres paramètres que vous pouvez également utiliser sont
net_write_timeout
etnet_read_timeout
.la source
Dans MAMP (version non-pro) j'ai ajouté
à
...\MAMP\bin\startMysql.sh
Crédits et plus de détails ici
la source
Cette erreur est due à l'expiration de wait_timeout.
Allez simplement sur le serveur mysql vérifier son wait_timeout:
http://sggoyal.blogspot.in/2015/01/2006-mysql-server-has-gone-away.html
la source
Il y a plusieurs causes à cette erreur.
Concernant MySQL / MariaDB:
wait_timeout
- Durée en secondes pendant laquelle le serveur attend qu'une connexion devienne active avant de la fermer.interactive_timeout
- Durée en secondes pendant laquelle le serveur attend une connexion interactive.max_allowed_packet
- Taille maximale en octets d'un paquet ou d'une chaîne générée / intermédiaire. Définissez la taille du BLOB le plus grand, par multiples de 1024.Exemple de my.cnf :
Concernant le serveur:
free -h
Concernant le cadre:
CONN_MAX_AGE
(voir docs )Comment le déboguer:
SHOW VARIABLES LIKE '%time%';
mysqladmin variables
log_warnings = 4
log_error_verbosity = 3
la source
Sous Windows, les gars utilisant xampp doivent utiliser ce chemin xampp / mysql / bin / my.ini et changer max_allowed_packet (sous la section [mysqld]) à la taille de votre choix. par exemple
Encore une fois sur php.ini (xampp / php / php.ini), changez upload_max_filesize la taille choisie. par exemple
M'a donné un mal de tête pendant un certain temps jusqu'à ce que je découvre cela. J'espère que ça aide.
la source
upload_max_filesize
variable. Il est toujours méconnu dans mon mysqlJ'obtenais cette même erreur sur mon serveur DigitalOcean Ubuntu.
J'ai essayé de changer les paramètres max_allowed_packet et wait_timeout mais aucun d'eux ne l'a corrigé.
Il s'avère que mon serveur était à court de RAM. J'ai ajouté un fichier d'échange de 1 Go et cela a résolu mon problème.
Vérifiez votre mémoire avec
free -h
pour voir si c'est la cause.la source
C'était un problème de RAM pour moi.
J'avais le même problème même sur un serveur avec 12 cœurs de processeur et 32 Go de RAM. J'ai fait plus de recherches et j'ai essayé de libérer de la RAM. Voici la commande que j'ai utilisée sur Ubuntu 14.04 pour libérer de la RAM:
Et, il a tout réparé. Je l'ai mis sous cron pour fonctionner toutes les heures.
Et, vous pouvez utiliser cette commande pour vérifier la quantité de RAM disponible disponible:
Et vous obtiendrez quelque chose comme ceci:
la source
Dans mon cas, c'était une faible valeur de
open_files_limit
variable, qui bloquait l'accès de mysqld aux fichiers de données.Je l'ai vérifié avec:
Après avoir changé la variable en grande valeur, notre serveur était de nouveau en vie:
la source
Si vous utilisez le WAMPSERVER 64 bits, veuillez rechercher plusieurs occurrences de max_allowed_packet car WAMP utilise la valeur définie sous [wampmysqld64] et non la valeur définie sous [mysqldump], ce qui pour moi était le problème, je mettais à jour la mauvaise. Définissez ceci sur quelque chose comme max_allowed_packet = 64M.
Espérons que cela aide les autres utilisateurs de Wampserver.
la source
Cela indique généralement des problèmes de connexion au serveur MySQL ou des délais d'expiration. Peut généralement être résolu en modifiant wait_timeout et max_allowed_packet dans my.cnf ou similaire.
Je suggère ces valeurs:
wait_timeout = 28800
max_allowed_packet = 8M
la source
Pour Vagrant Box, assurez-vous d'allouer suffisamment de mémoire à la boîte
la source
Le scénario peu probable est que vous disposez d'un pare-feu entre le client et le serveur qui force la réinitialisation TCP dans la connexion.
J'ai eu ce problème et j'ai trouvé que notre pare-feu F5 d'entreprise était configuré pour mettre fin aux sessions inactives inactives pendant plus de 5 minutes.
Encore une fois, c'est le scénario improbable.
la source
C'est toujours une bonne idée de vérifier les journaux du serveur Mysql, pour la raison pour laquelle il a disparu.
Cela vous le dira.
la source
Si vous utilisez un serveur xampp:
Allez dans xampp -> mysql -> bin -> my.ini
Modifier le paramètre ci-dessous:
max_allowed_packet = 500M
innodb_log_file_size = 128M
Cela m'a beaucoup aidé :)
la source
décommentez la ligne ci-dessous dans votre
my.ini/my.cnf
, cela divisera votre gros fichier en portion plus petiteÀ
la source
J'ai trouvé la solution à "# 2006 - Le serveur MySQL est parti" cette erreur. La solution consiste simplement à vérifier deux fichiers
Le chemin de ces fichiers dans Windows est
Dans ces deux fichiers, la valeur de ceci:
Dans mon cas, c'était:
changez-le en:
Assurez-vous dans les deux:
Et dernier set:
Redémarrez ensuite Wampserver.
Pour modifier le nom d'utilisateur et le mot de passe phpmyadmin
Vous pouvez directement changer le nom d'utilisateur et le mot de passe de phpmyadmin via le fichier config.inc.php
Ces deux lignes
Ici, vous pouvez donner un nouveau nom d'utilisateur et un nouveau mot de passe. Après les modifications, enregistrez le fichier et redémarrez le serveur WAMP.
la source
J'ai reçu le message d'erreur 2006 dans différents logiciels clients MySQL sur mon bureau Ubuntu. Il s'est avéré que ma version de pilote JDBC était trop ancienne.
la source
Cela peut être dû à la taille de votre fichier .sql.
Si vous utilisez xampp. Allez dans le panneau de configuration de xampp -> Cliquez sur MySql config -> Open my.ini.
Augmentez la taille du paquet.
la source
Il existe un moyen plus simple si vous utilisez XAMPP. Ouvrez le panneau de configuration XAMPP et cliquez sur le bouton de configuration dans la section mysql.
Maintenant, cliquez sur my.ini et il s'ouvrira dans l'éditeur. Mettez à jour le max_allowed_packet à votre taille requise.
Redémarrez ensuite le service mysql. Cliquez sur Arrêter sur le service Mysql, cliquez à nouveau sur Démarrer. Attendez quelques minutes.
Essayez ensuite d'exécuter à nouveau votre requête Mysql. J'espère que cela fonctionnera.
la source
MAMP 5.3, vous ne trouverez pas my.cnf et les ajouter ne fonctionne pas car max_allowed_packet est stocké dans des variables.
Une solution peut être:
Exécutez la requête suivante, il a défini max_allowed_packet sur 7 Go:
set global max_allowed_packet = 268435456;
Pour certains, vous devrez peut-être également augmenter les valeurs suivantes:
la source
Pour les utilisateurs utilisant XAMPP, il y a 2 paramètres max_allowed_packet dans C: \ xampp \ mysql \ bin \ my.ini.
la source
Cette erreur se produit essentiellement pour deux raisons.
Vous pouvez essayer ce code ci-dessous.
Il atténue l'erreur quelle qu'en soit la raison, en particulier pour la deuxième raison.
Si cela est dû à une faible RAM, vous devez soit augmenter l'efficacité de la connexion à la base de données à partir du code, de la configuration de la base de données, soit simplement augmenter la RAM.
la source
Juste au cas où cela aiderait quelqu'un:
J'ai eu cette erreur lorsque j'ai ouvert et fermé des connexions dans une fonction qui serait appelée depuis plusieurs parties de l'application. Nous avons obtenu trop de connexions, nous avons donc pensé que ce serait une bonne idée de réutiliser la connexion existante ou de la jeter et d'en créer une nouvelle comme ceci:
self :: $ instance-> query ('KILL CONNECTION_ID ()'); self :: $ instance = null; return self :: newConnection ($ base de données, $ hôte, $ utilisateur, $ mot de passe); } return self :: $ instance; } Eh bien, il s'avère que nous avons été un peu trop minutieux avec le massacre et que les processus faisant des choses importantes sur l'ancienne connexion n'ont jamais pu terminer leurs affaires. Nous avons donc abandonné ces lignes
et comme le matériel et la configuration de la machine le permettent, nous avons augmenté le nombre de connexions autorisées sur le serveur en ajoutant
à notre fichier de configuration. Cela a résolu notre problème pour l'instant et nous avons appris quelque chose sur la suppression des connexions mysql.
la source
Si vous savez que vous vous déconnectez pendant un certain temps, vous pouvez fermer votre connexion, effectuer votre traitement, vous reconnecter et rédiger vos rapports.
la source