Maison  >  Article  >  base de données  >  La solution au problème selon lequel le serveur MySQL a disparu lorsque MySQL importe de gros lots de données

La solution au problème selon lequel le serveur MySQL a disparu lorsque MySQL importe de gros lots de données

jacklove
jackloveoriginal
2018-06-08 23:20:362678parcourir

En raison de besoins professionnels, je dois importer un 200M sql dans la bibliothèque utilisateur

Exécuter la commande

mysql> use user
Database changed
mysql> source /tmp/user.sql

Pendant le processus d'importation, Le serveur MySQL semble avoir disparu Erreur, l'importation des données a échoué.

Le message d'erreur est le suivant :

ERROR 2006 (HY000): MySQL server has gone awayERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    11Current database: userERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    12Current database: userERROR 2006 (HY000): MySQL server has gone awayERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    13Current database: user

Au début, je pensais que cela était dû à un timeout, j'ai donc augmenté les valeurs de connect_timeout et wait_timeout.

Le problème persiste après la réexécution.
Solution :

Vérifiez les informations et trouvez le paramètre max_allowed_packet
L'explication officielle est de l'augmenter de manière appropriée<.> Le paramètre max_allowed_packet permet au système d'allouer une mémoire plus étendue pour le traitement lors du transfert de données volumineuses du client vers le serveur.

Vérifiez la valeur de mysql max_allowed_packet

mysql> show global variables like &#39;max_allowed_packet&#39;;
+--------------------+---------+| Variable_name      | Value   |
+--------------------+---------+| max_allowed_packet | 4194304 |
+--------------------+---------+
Vous pouvez voir qu'elle est

4M, puis augmentez-la à 256M(1024* 1024*256)

mysql> set global max_allowed_packet=268435456;
Query OK, 0 rows affected (0.00 sec)mysql> show global variables like &#39;max_allowed_packet&#39;;
+--------------------+-----------+| Variable_name      | Value     |
+--------------------+-----------+| max_allowed_packet | 268435456 |
+--------------------+-----------+1 row in set (0.00 sec)
Après modification, exécutez l'import, tout est normal, et le problème est résolu.


Remarque : Utilisez la commande set global pour modifier la valeur de max_allowed_packet. Elle deviendra invalide après le redémarrage de MySQL et sera restaurée à la valeur par défaut.

Si vous ne souhaitez pas restaurer après le redémarrage, vous pouvez ouvrir le fichier

my.cnf et ajouter max_allowed_packet = 256M.

Cet article explique que la solution au problème du serveur MySQL a disparu lors de l'importation de gros lots de données dans MySQL. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois.

Recommandations associées :

Instances de MySQL recherchant des données dans un rayon de N kilomètres à proximité

Méthode MySQL pour se reconnecter automatiquement lorsque la connexion est interrompue

php implémente une classe pour convertir les numéros d'entité HTML et les chaînes non-ASCII

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