Erreur générale de la base de données: le serveur MySQL 2006 est parti


24

Récemment, j'ai commencé à recevoir une erreur chaque fois que j'essaie d'ajouter un contenu, quel que soit le type. C'est l'erreur qui apparaît dans le navigateur:

Exception non capturée supplémentaire levée lors de la gestion de l'exception.

PDOException d'origine: SQLSTATE [HY000]: Erreur générale: 2006 Le serveur MySQL est parti: SELECT COUNT (cid) FROM {comment} WHERE status =: status; Tableau ([: status] => 0) dans comment_count_unpublished () (ligne 313 de /Applications/MAMP/htdocs/modules/comment/comment.module).

Additionnel

PDOException: SQLSTATE [HY000]: Erreur générale: le serveur MySQL 2006 est parti: INSERT INTO {watchdog} (uid, type, message, variables, gravité, lien, emplacement, référent, nom d'hôte, horodatage) VALEURS (: db_insert_placeholder_0,: db_insert_placeholder_1 ,: db_insert_placeholder_2,: db_insert_placeholder_3,: db_insert_placeholder_4,: db_insert_placeholder_5,: db_insert_placeholder_6,: db_insert_placeholder_7,: db_insert_placeholder_8,: db_insert_placeholder_9) Tableau ([: db_insert_placeholder_0] => 1 [: db_insert_placeholder_1] => php [: db_insert_placeholder_2] =>% type:! Message dans la fonction% (ligne% ligne du fichier%). [: Db_insert_placeholder_3] => a: 6: { s: 5: "% type"; s: 12: "PDOException"; s: 8: "! message"; s: 154: "SQLSTATE [HY000]: Erreur générale: 2006 Le serveur MySQL est parti: SELECT COUNT (cid) FROM {comment} WHERE status =: status; Tableau ([: status] = & gt; 0) "; s: 9:"% function "; s: 27:" comment_count_unpublished () "; s: 5:"% file "; s: 56:" / Applications / MAMP /htdocs/modules/comment/comment.module";s:5:"%line";i:313;s:14:"severity_level";i:3;} [: db_insert_placeholder_4] => 3 [: db_insert_placeholder_5] = > [: db_insert_placeholder_6] =>http: // localhost: 8888 /? q = noeud% 2Fadd% 2Farcade-project & amp ; [: db_insert_placeholder_7] => http: // localhost: 8888 / [: db_insert_placeholder_8] => 127.0.0.1 [: db_insert_placeholder_9] => 1338336955) dans dblog_watchdog () (ligne 154 de / Applications / MAMP / htdocs / modules / dblog / dblog.module).

J'obtiens également l'erreur suivante dans mon fichier d'erreur php:

Erreur fatale PHP: exception non détectée 'PDOException' avec le message 'SQLSTATE [HY000]: erreur générale: le serveur MySQL 2006 est parti' dans /Applications/MAMP/htdocs/includes/database/database.inc:2136

Trace de pile:
0 /Applications/MAMP/htdocs/includes/database/database.inc(2136): PDOStatement-> execute (Array)
1 /Applications/MAMP/htdocs/includes/database/database.inc(664): DatabaseStatementBase- > exécuter (Array, Array)
2 /Applications/MAMP/htdocs/includes/database/database.inc(2315): DatabaseConnection-> requête ('SELECT expire, ...', Array, Array)
3 / Applications / MAMP / htdocs / includes / lock.inc (167): db_query ('SELECT expire, ...', Array)
4 /Applications/MAMP/htdocs/includes/lock.inc(146): lock_may_be_available ('theme_registry: ...' )
5 /Applications/MAMP/htdocs/includes/theme.inc(447): lock_acquire ('theme_registry: ...')
6 /Applications/MAMP/htdocs/includes/bootstrap.inc(427): ThemeRegistry-> set ( Array)
7 [fonction interne]: DrupalCacheArray -> __ destruct ()
8 {main} jeté dans /Applications/MAMP/htdocs/includes/database/database.inc sur la ligne 2136

J'ai un peu de mal à déchiffrer ces messages d'erreur. Quelqu'un pourrait-il m'aider à comprendre ce qui se passe ici?

Réponses:


31

9 fois sur 10, cette erreur est due à un max_allowed_packetparamètre insuffisamment grand dans le fichier my.cnf de votre serveur MySQL.

D'après mon expérience, la valeur par défaut standard pour MAMP est 1 Mo, ce qui n'est généralement pas suffisant pour Drupal (en particulier compte tenu de la taille de certaines des chaînes de cache qu'il génère).

Essayez d'augmenter progressivement ce paramètre pour voir si l'erreur disparaît. Je suis sûr qu'une recherche rapide sur Google vous dira comment procéder dans MAMP.


Heureusement, mon cas n'est pas tombé dans la catégorie 1 fois sur 10. Vos recommandations ont fonctionné comme un charme! Merci!
Mike2012

Face à la même erreur dans les fenêtres. Avoir configuré la pile apache, mysql et php localement ... veuillez guider
Prerit Mohan

Et en cas d'hébergement mutualisé, que puis-je faire?
mohammed amine bourkadi

Contactez votre hôte, demandez-lui de faire le changement. S'ils ne peuvent pas / ne veulent pas, vous devez décider si cet hôte est le bon pour vous @mohammedaminebourkadi.
Clive

6

Cette erreur MySQL / MariaDB:

Erreur: 2006 ( CR_SERVER_GONE_ERROR) - Le serveur MySQL est parti

signifie essentiellement que le client n'a pas pu envoyer de question au serveur .

Cela peut se produire soit par un problème temporaire, une requête SQL trop volumineuse ou invalide, une mauvaise configuration de votre serveur ou une limitation de votre fournisseur d'hébergement.

En général, cette erreur peut résulter de plusieurs facteurs, tels que:

  • une requête au serveur est incorrecte ou trop volumineuse,

    Solution: augmenter la max_allowed_packetvariable .

    Remarque: assurez-vous que la variable est sous la [mysqld]section, non [mysql].

    Remarque: N'oubliez pas de redémarrer le serveur MySQL / MariaDB.

  • Vous avez obtenu un délai d'expiration de la connexion TCP / IP côté client.

    Solution: augmenter la wait_timeoutvariable .

  • Vous avez tenté d'exécuter une requête après la fermeture de la connexion au serveur.

    Solution: une erreur logique dans l'application doit être corrigée.

  • Les recherches de nom d'hôte ont échoué (par exemple, problème de serveur DNS) ou le serveur a été démarré avec l' --skip-networkingoption.

    Une autre possibilité est que votre pare-feu bloque le port MySQL (par exemple 3306 par défaut).

  • Le thread en cours d'exécution a été tué, alors réessayez.

  • Vous avez rencontré un bogue où le serveur est mort lors de l'exécution de la requête.

  • Un client s'exécutant sur un hôte différent n'a pas les privilèges nécessaires pour se connecter.

  • Et bien d'autres, alors apprenez-en plus sur: B.5.2.9 Le serveur MySQL est parti .

Pour plus de détails, veuillez vérifier vos journaux MySQL ou système (par exemple /var/log/messages).

Pour déboguer le serveur ou le client MySQL, veuillez vérifier: 26.5 Débogage et portage de MySQL .


Si vous essayez d'importer la base de données à partir du fichier à l'aide de la commande drushou mysql, vous pouvez:

  • Ajoutez une option de force ( -f) pour mysqlcontinuer et exécuter le reste des requêtes.

    Ceci est utile si la base de données contient des requêtes volumineuses liées au cache qui sont volumineuses, mais de toute façon non pertinentes.

    En utilisant drush, essayez:cat foo.sql | $(drush sqlconnect) -f

  • Essayez d'appliquer l' --max-allowed-packetoption pour mysqldes valeurs plus petites.

  • Augmentez max_allowed_packetetwait_timeout dans votre configuration de serveur (par exemple ~/.my.cnf).

  • Videz à nouveau la base de données d'origine en utilisant l' --skip-extended-insertoption pour décomposer les grandes requêtes. Importez ensuite à nouveau le fichier.


Voir aussi: ERREUR 2006 (HY000): le serveur MySQL est parti


3

La réponse que @Clive donne normalement est le cas, mais il peut y avoir une cause supplémentaire, en particulier avec les formulaires d'ajout de nœud.

Les formulaires d'ajout de nœuds sont généralement volumineux, et leur traitement peut utiliser beaucoup de mémoire (surtout s'il y a un traitement d'image pendant la sauvegarde, comme avec les modules de recadrage). Si le serveur manque de mémoire, le processus mysqld peut être tué, ce qui entraîne le même message "disparu".

L'indice est de regarder dans les journaux du serveur. Sur une machine CentOS, vous pouvez voir l'entrée suivante dans / var / log / messages

1 janvier 00:00:00 noyau du nom de
serveur: Mémoire insuffisante : tuer le processus XXXX (mysqld) marquer XXX ou sacrifier l'enfant 1 janvier 00:00:00 noyau du nom de serveur: processus terminé XXXX, UID XX, (mysqld) total-vm: XXXkB , anon-rss: XXXkB, fichier-rss: XXkB

La solution ici consiste soit à ajouter plus de RAM, soit à ajouter / augmenter le swap.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.