Allgemeiner Datenbankfehler: 2006 MySQL Server ist verschwunden

24

Vor kurzem habe ich jedes Mal eine Fehlermeldung erhalten, wenn ich versuche, einen Inhalt hinzuzufügen, unabhängig von der Art. Dies ist der Fehler, der im Browser angezeigt wird:

Zusätzliche nicht erfasste Ausnahme, die während der Behandlung der Ausnahme ausgelöst wird.

Ursprüngliche PDOException: SQLSTATE [HY000]: Allgemeiner Fehler: 2006 MySQL-Server ist verschwunden: SELECT COUNT (cid) FROM {comment} WHERE status =: status; Array ([: status] => 0) in comment_count_unpublished () (Zeile 313 von /Applications/MAMP/htdocs/modules/comment/comment.module).

Zusätzlich

PDOException: SQLSTATE [HY000]: Allgemeiner Fehler: 2006 MySQL-Server wurde entfernt: INSERT INTO {Watchdog} (UID, Typ, Nachricht, Variablen, Schweregrad, Link, Speicherort, Referer, Hostname, Zeitstempel) VALUES (: 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_ins Array ([: db_insert_placeholder_0] => 1 [: db_insert_placeholder_1] => php [: db_insert_placeholder_2] =>% type:! Message in% function (Zeile% Zeile von% file). [: Db_insert_placeholder_3] => a: 6: { s: 5: "% type"; s: 12: "PDOException"; s: 8: "! message"; s: 154: "SQLSTATE [HY000]: Allgemeiner Fehler: 2006 MySQL-Server ist verschwunden: SELECT COUNT (cid) FROM {comment} WHERE status =: status; Array ([: 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 = Knoten% 2Fadd% 2Farcade-project & amp ; [: db_insert_placeholder_7] => http: // localhost: 8888 / [: db_insert_placeholder_8] => 127.0.0.1 [: db_insert_placeholder_9] => 1338336955) in dblog_watchdog () (Zeile 154 von / Applications / MAMP / htdocs / modules / dblog.module).

Ich erhalte auch den folgenden Fehler in meiner PHP-Fehlerdatei:

Schwerwiegender PHP-Fehler: Ungefangene Ausnahme 'PDOException' mit der Meldung 'SQLSTATE [HY000]: Allgemeiner Fehler: 2006 MySQL-Server ist nicht mehr verfügbar' in /Applications/MAMP/htdocs/includes/database/database.inc:2136

Stack-Trace:
0 /Applications/MAMP/htdocs/includes/database/database.inc(2136): PDOStatement-> execute (Array)
1 /Applications/MAMP/htdocs/includes/database/database.inc(664): DatabaseStatementBase- >
execute (Array, Array) 2 /Applications/MAMP/htdocs/includes/database/database.inc(2315): DatabaseConnection-> query ('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 [interne Funktion]: DrupalCacheArray -> __ destruct ()
8 {main} in /Applications/MAMP/htdocs/includes/database/database.inc in Zeile 2136

Ich habe ein kleines Problem beim Entschlüsseln dieser Fehlermeldungen. Könnte mir jemand helfen zu verstehen, was hier los ist?

Mike2012
quelle

Antworten:

31

9 von 10 max_allowed_packetFällen wird dieser Fehler durch eine unzureichend große Einstellung in der my.cnf-Datei Ihres MySQL-Servers verursacht.

Die Standardeinstellung für MAMP ist nach meiner Erfahrung 1 MB, was für Drupal normalerweise nicht ausreicht (insbesondere angesichts der Größe einiger der von ihm generierten Cache-Zeichenfolgen).

Erhöhen Sie diese Einstellung schrittweise, um festzustellen, ob der Fehler behoben ist. Ich bin sicher, eine schnelle Google-Suche wird Ihnen zeigen, wie das in MAMP geht.

Clive
quelle
Glücklicherweise fiel mein Fall nicht in die Kategorie 1 von 10. Ihre Empfehlungen haben wie ein Zauber gewirkt! Vielen Dank!
Mike2012
Vor dem gleichen Fehler in Windows. Haben Apache, MySQL und PHP-Stack lokal konfiguriert ... bitte Anleitung
Prerit Mohan
Und was kann ich bei Shared Hosting tun?
Mohammed Amin Bourkadi
Wenden Sie sich an Ihren Gastgeber und bitten Sie ihn, die Änderung vorzunehmen. Wenn sie nicht können / werden, müssen Sie entscheiden, ob dieser Gastgeber der richtige für Sie ist @mohammedaminebourkadi.
Clive
6

Dieser MySQL / MariaDB-Fehler:

Fehler: 2006 ( CR_SERVER_GONE_ERROR) - Der MySQL-Server ist verschwunden

bedeutet im Grunde, dass der Client keine Frage an den Server senden konnte .

Dies kann entweder durch eine vorübergehende Störung, eine zu große oder ungültige SQL-Abfrage, eine Fehlkonfiguration Ihres Servers oder eine Einschränkung Ihres Hosting-Providers geschehen.

Im Allgemeinen kann dieser Fehler folgende Ursachen haben:

  • eine Abfrage an den Server ist falsch oder zu groß,

    Lösung: Erhöhen Sie die max_allowed_packetVariable .

    Hinweis: Stellen Sie sicher, dass sich die Variable unter [mysqld]Abschnitt befindet, nicht [mysql].

    Hinweis: Vergessen Sie nicht, den MySQL / MariaDB-Server neu zu starten.

  • Bei der TCP / IP-Verbindung auf der Clientseite ist eine Zeitüberschreitung aufgetreten.

    Lösung: Erhöhen Sie die wait_timeoutVariable .

  • Sie haben versucht, eine Abfrage auszuführen, nachdem die Verbindung zum Server geschlossen wurde.

    Lösung: Ein logischer Fehler in der Anwendung sollte behoben werden.

  • Hostnamensuche fehlgeschlagen (z. B. DNS-Serverproblem) oder Server wurde mit --skip-networkingOption gestartet .

    Eine andere Möglichkeit ist, dass Ihre Firewall den MySQL-Port blockiert (z. B. standardmäßig 3306).

  • Der laufende Thread wurde abgebrochen. Versuchen Sie es erneut.

  • Sie haben einen Fehler festgestellt, bei dem der Server während der Ausführung der Abfrage starb.

  • Ein Client, der auf einem anderen Host ausgeführt wird, verfügt nicht über die erforderlichen Berechtigungen zum Herstellen einer Verbindung.

  • Weitere Informationen finden Sie unter : B.5.2.9 Der MySQL-Server ist nicht mehr verfügbar .

Weitere Informationen finden Sie in Ihren MySQL- oder Systemprotokollen (z /var/log/messages. B. ).

Informationen zum Debuggen von MySQL-Servern oder -Clients finden Sie unter: 26.5 Debuggen und Portieren von MySQL .


Wenn Sie versuchen, die Datenbank mit drushoder aus der Datei zu importieren mysql, haben Sie folgende Möglichkeiten:

  • Fügen Sie eine force-Option ( -f) hinzu, um mysqlfortzufahren und die restlichen Abfragen auszuführen.

    Dies ist nützlich, wenn die Datenbank einige umfangreiche Abfragen im Zusammenhang mit dem Cache enthält, die zwar umfangreich, aber nicht relevant sind.

    Mit drush, versuchen Sie :cat foo.sql | $(drush sqlconnect) -f

  • Versuchen Sie, die --max-allowed-packetOption für mysqlmit kleineren Werten anzuwenden .

  • Erhöhen Sie max_allowed_packetundwait_timeout in Ihrer Serverkonfiguration (zB ~/.my.cnf).

  • Sichern Sie die ursprüngliche Datenbank erneut, indem Sie die --skip-extended-insertOption verwenden, um die umfangreichen Abfragen aufzuschlüsseln. Importieren Sie dann die Datei erneut.


Siehe auch: FEHLER 2006 (HY000): MySQL-Server ist verschwunden

Kenorb
quelle
3

Die Antwort, die @Clive normalerweise gibt, ist der Fall, aber es kann eine zusätzliche Ursache geben, insbesondere bei Formularen zum Hinzufügen von Knoten.

Formulare zum Hinzufügen von Knoten sind in der Regel groß, und ihre Verarbeitung kann viel Speicher beanspruchen (insbesondere, wenn während des Speichervorgangs eine Bildverarbeitung stattfindet, wie bei den Zuschneidemodulen). Wenn auf dem Server nicht mehr genügend Arbeitsspeicher vorhanden ist, wird der mysqld-Prozess möglicherweise abgebrochen, was zur gleichen Meldung "Abwesend" führt.

Der Hinweis ist, in den Server-Protokollen zu suchen. Auf einem CentOS-Computer wird möglicherweise der folgende Eintrag in / var / log / messages angezeigt

Jan 1 00:00:00 Servername-Kernel: Nicht genügend Speicher: Prozess XXXX (mysqld) beenden XXX Punkte oder Kind opfern
Jan 1 00:00:00 Servername-Kernel: Prozess XXXX, UID XX (mysqld) beendet total-vm: XXXkB , anon-rss: XXXkB, file-rss: XXkB

Die Lösung besteht darin, entweder mehr RAM hinzuzufügen oder Swap hinzuzufügen / zu erhöhen.

mpdonadio
quelle