366 Stimmen

FEHLER 2006 (HY000): MySQL-Server hat sich verabschiedet

Ich erhalte diesen Fehler, wenn ich versuche, eine große SQL-Datei (eine große INSERT Abfrage).

mysql>  source file.sql
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: *** NONE ***

ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    3
Current database: *** NONE ***

In der Tabelle wird nichts aktualisiert. Ich habe versucht, die Tabelle/Datenbank zu löschen und rückgängig zu machen sowie MySQL neu zu starten. Keine dieser Maßnahmen löst das Problem.

Hier ist meine maximale Paketgröße:

+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+

Hier ist die Dateigröße:

$ ls -s file.sql 
79512 file.sql

Wenn ich die andere Methode ausprobiere...

$ ./mysql -u root -p my_db < file.sql
Enter password: 
ERROR 2006 (HY000) at line 1: MySQL server has gone away

1voto

MarkR Punkte 60862

Wenn die Verbindung wiederhergestellt wird und die Verbindungs-ID 2 angezeigt wird, ist der Server höchstwahrscheinlich gerade abgestürzt.

Wenden Sie sich an den Serveradministrator und bitten Sie ihn, das Problem zu diagnostizieren. Kein nicht bösartiges SQL sollte den Server zum Absturz bringen, und die Ausgabe von mysqldump sollte es auch nicht.

Es ist wahrscheinlich, dass der Serveradministrator einen großen Fehler gemacht hat, z. B. indem er Puffergrößen zugewiesen hat, die größer sind als die Adressraumgrenzen der Architektur oder die Kapazität des virtuellen Speichers übersteigen. Das MySQL-Fehlerprotokoll wird wahrscheinlich einige relevante Informationen enthalten; sie werden dies überwachen, wenn sie ohnehin kompetent sind.

1voto

Areeb Soo Yasir Punkte 590

Dies ist ein eher seltenes Problem, aber ich habe dies gesehen, wenn jemand das gesamte /var/lib/mysql-Verzeichnis kopiert hat, um seine DB auf einen anderen Server zu migrieren. Der Grund dafür, dass es nicht funktioniert, ist, dass die Datenbank lief und Protokolldateien verwendet hat. Manchmal funktioniert es nicht, wenn es Logs in /var/log/mysql gibt. Die Lösung besteht darin, auch die /var/log/mysql-Dateien zu kopieren.

1voto

SebaGra Punkte 2311

Für amazon RDS (das ist mein Fall), können Sie die max_allowed_packet Parameterwert auf einen beliebigen numerischen Wert in Bytes, der für die größten Daten in Ihrer Einfügung sinnvoll ist (z. B.: Wenn Sie in Ihrer Einfügung einige 50 MB große Blob-Werte haben, setzen Sie den max_allowed_packet bis 64M = 67108864), in einer neuen oder bestehenden parameter-group . Wenden Sie dann diese Parametergruppe auf Ihre MySQL-Instanz an (dies kann einen Neustart der Instanz erfordern).

1voto

Jesse Nickles Punkte 781

Wenn Sie alle diese Lösungen ausprobiert haben, insbesondere die Erhöhung der max_allowed_packet bis zur maximal unterstützten Anzahl von 1GB und Sie immer noch diese Fehler sehen, könnte es sein, dass Ihr Server buchstäblich nicht genügend freien RAM-Speicher zur Verfügung hat...

Die Lösung: Rüsten Sie Ihren Server mit mehr RAM-Speicher auf, und versuchen Sie es erneut.

Anmerkung: Ich bin überrascht, dass diese einfache Lösung nach mehr als 8 Jahren Diskussion in diesem Thread noch nicht erwähnt wurde... manchmal neigen wir Entwickler dazu, Dinge zu sehr zu überdenken.

0voto

MilanG Punkte 6778

Für Drupal 8-Benutzer, die nach einer Lösung für DB-Importfehler suchen:

Am Ende der Sql-Dump-Datei können Befehle zum Einfügen von Daten in die Tabelle "webprofiler" stehen. Ich vermute, dass es sich dabei um eine Debug-Protokolldatei handelt, die für das Funktionieren der Website nicht wirklich wichtig ist, so dass all dies entfernt werden kann. Ich habe alle diese Einfügungen gelöscht, einschließlich LOCK TABLES und UNLOCK TABLES (und alles dazwischen). Es steht ganz unten in der SQL-Datei. Das Problem wird hier beschrieben:

https://www.drupal.org/project/devel/issues/2723437

Aber es gibt keine andere Lösung als das Kürzen der Tabelle.

Übrigens habe ich alle Lösungen aus den obigen Antworten ausprobiert und nichts hat geholfen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X