wake-up-neo.com

MySQL Server ist beim Importieren großer SQL-Dateien nicht mehr vorhanden

Ich habe versucht, eine große SQL-Datei über phpMyAdmin zu importieren ... 

'MySQL-Server ist weg'

Was ist zu tun?

226
FrancisMV123

Wie gesagt hier :

Zwei der häufigsten Gründe (und Korrekturen) für den MySQL-Server sind verschwunden (Fehler 2006) sind:

Server hat das Zeitlimit überschritten und die Verbindung wurde geschlossen. Wie repariert man: 

  1. Überprüfen Sie, dass die wait_timeout-Variable in der my.cnf-Konfigurationsdatei Ihres mysqld groß genug ist. Unter Debian: Sudo nano /etc/mysql/my.cnf setzen Sie wait_timeout = 600 Sekunden (Sie können Diesen Wert ändern oder verringern, wenn Fehler 2006 nicht mehr vorhanden ist) und dann Sudo /etc/init.d/mysql restart. Ich habe nicht geprüft, aber der Standardwert für wait_timeout kann etwa 28800 Sekunden (8 Stunden) betragen.

  2. Der Server hat ein falsches oder zu großes Paket verworfen. Wenn mysqld ein zu großes oder falsches Paket erhält, wird davon ausgegangen, dass etwas .__ hat. Mit dem Client ist ein Fehler aufgetreten und die Verbindung wird getrennt. Sie können erhöhen die maximale Paketgrößenbegrenzung durch Erhöhen des Werts von max_allowed_packet in meiner.cnf-Datei. Unter Debian: Sudo nano /etc/mysql/my.cnf setzen Sie max_allowed_packet = 64M (Sie können Diesen Wert ändern oder verringern, wenn Fehler 2006 nicht mehr vorhanden ist) und dann Sudo /etc/init.d/mysql restart.

Edit:Beachten Sie, dass die Befehle der MySQL-Optionsdateien nicht bereits als Kommentare zur Verfügung stehen (wie in php.ini zum Beispiel). Sie müssen also jede Änderung/Änderung in my.cnf oder my.ini eingeben und platzieren Sie befinden sich im mysql/data-Verzeichnis oder in einem der anderen Pfade unter der richtigen Gruppe von Optionen wie [client], [myslqd]... usw., zum Beispiel:
[mysqld]
wait_timeout = 600
max_allowed_packet = 64M
Starten Sie den Server neu. Um die Werte zu erhalten, geben Sie in der Konsole Folgendes ein:
select @@wait_timeout;
select @@max_allowed_packet;

334
GBD

Für mich hat diese Lösung nicht geklappt, also habe ich ausgeführt

SET GLOBAL max_allowed_packet=1073741824;

in meinem SQL-Client.

Wenn dies bei laufendem MySQL-Dienst nicht möglich ist, sollten Sie den Dienst anhalten und die Variable in der Datei "my.ini" ändern.

Zum Beispiel: 

max_allowed_packet=20M
83
salsinga

Wenn Sie mit Standardwerten arbeiten, haben Sie viel Spielraum, um Ihre mysql-Konfiguration zu optimieren.

Der erste Schritt, den ich empfehle, besteht darin, das max_allowed_packet auf 128M zu erhöhen.

Laden Sie dann das MySQL Tuning Primer-Skript herunter und führen Sie es aus. Sie erhalten Empfehlungen zu verschiedenen Facetten Ihrer Konfiguration, um die Leistung zu verbessern.

Überprüfen Sie auch, wie Sie die Timeout-Werte in MySQL und PHP anpassen.

Wie groß (Dateigröße) ist die Datei, die Sie importieren, und können Sie die Datei mithilfe des Befehlszeilenclients mysql anstelle von PHPMyAdmin importieren?

17
Daemon of Chaos

Wenn Sie mit XAMPP arbeiten, können Sie das MySQL Server-Problem mit den folgenden Änderungen beheben.

Öffnen Sie Ihre my.ini-Datei Meine.ini-Position lautet (D:\xampp\mysql\bin\my.ini).

Ändern Sie die folgenden Variablenwerte 

max_allowed_packet = 64M
innodb_lock_wait_timeout = 500
15
Mohan Gathala

Wenn Sie MAMP unter OS X verwenden, müssen Sie den Wert max_allowed_packet in der Vorlage für MySQL ändern.

  1. Sie finden es unter: Datei> Vorlage bearbeiten> MySQL my.cnf

  2. Suchen Sie dann nach max_allowed_packet, ändern Sie den Wert undsave.

Hoffe das hilft jemandem.

8
askthebigo

Ich habe mein Problem mit dieser kurzen /etc/mysql/my.cnf-Datei gelöst: 

[mysqld]
wait_timeout = 600
max_allowed_packet = 100M
6
Dan.faudemer

Ich hatte diesen Fehler und andere verwandte, als ich 16 GB SQL-Datei importierte. Bearbeiten Sie my.ini und stellen Sie Folgendes (basierend auf mehreren verschiedenen Beiträgen) im Abschnitt [mysqld] ein:

max_allowed_packet      = 110M
innodb_buffer_pool_size=511M
innodb_log_file_size=500M
innodb_log_buffer_size = 800M
net_read_timeout        = 600
net_write_timeout       = 600

Wenn Sie unter Windows laufen, gehen Sie in die Systemsteuerung, Dienste und schauen Sie sich die Details für MySQL an und Sie werden sehen, wo sich meine.ini befindet. Starten Sie nach dem Bearbeiten und Speichern von my.ini den mysql-Dienst neu (oder starten Sie den Computer neu).

Wenn Sie HeidiSQL verwenden, können Sie auch einige oder alle davon festlegen.

5
BenV136

Der andere Grund dafür ist, dass der Speicher knapp wird. Überprüfen Sie/var/log/messages und stellen Sie sicher, dass Ihre my.cnf nicht so eingerichtet ist, dass mysqld mehr Speicherplatz zuweist, als auf Ihrem Computer vorhanden ist.

Ihr mysqld-Prozess kann vom Kernel tatsächlich abgebrochen und vom "safe_mysqld" -Prozess neu gestartet werden, ohne dass Sie es merken.

Verwenden Sie top und sehen Sie sich die Speicherzuordnung an, während Sie ausgeführt wird, um Ihren Headroom zu ermitteln.

erstellen Sie eine Sicherungskopie von my.cnf, bevor Sie sie ändern.

5
TekOps

Wenn Ihre Daten BLOB-Daten enthalten:

Beachten Sie, dass ein Import von Daten von der Befehlszeile an BLOB-Daten zu drosseln scheint, was zu dem Fehler "MySQL-Server ist weg" führt.

Um dies zu vermeiden, erstellen Sie den mysqldump erneut mit dem Flag --hex-blob:

http://dev.mysql.com/doc/refman/5.7/de/mysqldump.html#option_mysqldump_hex-blob

dadurch wird die Datendatei mit hexadezimalen Werten geschrieben und nicht mit binärem Text.

PhpMyAdmin hat auch die Option "Binäre Spalten in hexadezimaler Schreibweise ausgeben (z. B." abc "wird zu 0x616263), was gut funktioniert.

Beachten Sie, dass es seit langem einen Fehler gibt (Stand Dezember 2015). Dies bedeutet, dass GEOM-Spalten nicht konvertiert werden: Sichern Sie eine Tabelle mit einer GEOMETRY-Spalte mit mysqldump? Die Verwendung eines Programms wie PhpMyAdmin scheint also die einzige Problemumgehung zu sein (die oben angegebene Option konvertiert GEOM-Spalten korrekt).

2
fooquency

Wenn der Fehler lange dauert, vergrößern Sie die Variable wait_timeout

Wenn es sofort fehlschlägt, vergrößern Sie die Variable max_allowed_packet. Wenn es immer noch nicht funktioniert, stellen Sie sicher, dass der Befehl gültiges SQL ist. Meiner hatte unausgeformte Zitate, die alles vermasselt haben.

Wenn möglich, sollten Sie auch die Anzahl der Einfügungen eines einzelnen SQL-Befehls auf etwa 1000 begrenzen. Sie können ein Skript erstellen, das mehrere Anweisungen aus einer einzigen Anweisung erstellt, indem Sie den INSERT ...-Part alle n Einfügungen erneut einführen.

1
e18r

Ich habe "max_allowed_packet" auf 1024M aktualisiert, aber es funktionierte immer noch nicht. Es stellte sich heraus, dass mein Bereitstellungsskript ausgeführt wurde: 

mysql --max_allowed_packet=512M --database=mydb -u root < .\db\db.sql

Stellen Sie sicher, dass Sie in der Befehlszeile explizit eine größere Zahl angeben, wenn Sie dies auf diese Weise tun.

1
coderama

ich habe eine ähnliche Fehlermeldung. Um dies zu lösen, öffnen Sie einfach meine.ini-Datei. Hier in Zeile Nr. 36 ändern Sie den Wert der maximal zulässigen Paketgröße, dh. max_allowed_packet = 20M

1
parag jain

Stellen Sie sicher, dass der mysqld-Prozess aufgrund von Service-Managern wie systemd nicht neu gestartet wird.

Ich hatte dieses Problem in Vagrant mit Centos 7. Konfiguration Tweaks half nicht. Es stellte sich heraus, dass es systemd war, das den mysqld-Dienst jedes Mal abbrach, wenn er zu viel Speicher benötigte.

0
tvorog

Ich mache einige große Berechnungen, bei denen die mysql-Verbindung lange Zeit und schwere Daten benötigt. Ich stand vor dieser Ausgabe von "Mysql go away". Also habe ich versucht, die Abfragen zu optimieren, aber das hat mir nicht geholfen. Dann habe ich den MySQL-Variablenlimit erhöht, der standardmäßig auf einen niedrigeren Wert gesetzt ist. 

wait_timeout max_allowed_packet

Um das zu erreichen, was auch immer zu Ihnen passt, sollte es die Any Number * 1024 (Bytes) sein. Sie können sich mit dem Befehl ' mysql -u username - p ' am Terminal anmelden und diese Variablengrenzen überprüfen und ändern.

0

Wenn das Erhöhen von max_allowed_packet nicht hilft.

Beim Importieren einer .sql-Datei über Sequel Pro in meine Datenbank wurde die gleiche Fehlermeldung angezeigt. 

Der Fehler blieb weiterhin bestehen, nachdem max_allowed_packet auf 512M gesetzt wurde. Daher führte ich den Import in der Befehlszeile statt mit:

mysql --verbose -u root -p DatabaseName < MySQL.sql

Es gab den folgenden Fehler: 

ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled

Ich habe ein paar hilfreiche StackOverflow-Fragen gefunden: 

In meinem Fall war meine .sql-Datei etwas beschädigt oder so. Der MySQL-Dump, den wir erhalten, wird in zwei Zip-Dateien geliefert, die miteinander verkettet und entpackt werden müssen. Ich denke, dass das Entpacken anfangs unterbrochen wurde und die Datei mit einigen ungeraden Zeichen und Kodierungen beließ. Einen neuen MySQL-Dump zu bekommen und ihn richtig zu entpacken, hat für mich funktioniert.

Ich wollte das hier nur hinzufügen, falls andere feststellen sollten, dass das Erhöhen der max_allowed_packet-Variablen nicht half.

0
Joshua Pinter

Für GoDaddy Shared Hosting

Bei GoDaddy Shared Hosting-Konten ist es schwierig, die PHP.ini-Dateien usw. zu optimieren. Es gibt jedoch einen anderen Weg und es hat einfach perfekt für mich funktioniert. (Ich habe gerade erfolgreich eine 3.8Mb .sql-Textdatei hochgeladen, die 3100 Zeilen und 145 Spalten enthält. Mit dem Befehl IMPORT in phpMyAdmin erhielt ich den gefürchteten MySQL-Server -Fehler und keine weiteren Informationen.)

Ich fand, dass Matt Butcher die richtige Antwort hatte. Wie Matt hatte ich alle möglichen Tricks ausprobiert, vom Export von MySQL-Datenbanken in mundgerechte Stücke bis hin zum Schreiben von Skripts, die große Importe in kleinere zerlegen. Aber hier ist was funktioniert:

(1) CPANEL ---> FILES (Gruppe) ---> BACKUP

(2a) Unter der Überschrift "Teilsicherungen" ...
(2b) Unter "Herunterladen einer MySQL-Datenbanksicherung"
(2c) Wählen Sie Ihre Datenbank aus und laden Sie ein Backup herunter (dieser Schritt ist optional, aber sinnvoll)

(3a) Direkt rechts von 2b unter "Wiederherstellen einer MySQL-Datenbank-Sicherung"
(3b) Wählen Sie die .SQL-Importdatei von Ihrem lokalen Laufwerk aus
(3c) Wahres Glück wird Ihnen gehören (in Kürze ...) Meines dauerte etwa 5 Sekunden

Diese Methode konnte ich verwenden, um eine einzelne Tabelle zu importieren. Nichts anderes in meiner Datenbank war betroffen - aber davor soll Schritt (2) schützen.

Anmerkungen:
ein. Wenn Sie sich nicht sicher sind, wie Sie eine .SQL-Importdatei erstellen, exportieren Sie mit phpMyAdmin eine Tabelle und ändern Sie diese Dateistruktur.

QUELLE: Matt Butcher 2010 Artikel

0
gibberish

Ich hatte heute einen ähnlichen Fehler beim Duplizieren der Datenbank (MySQL-Server ist weg ...), aber als ich versuche, den Neustart von mysql.server neu zu starten, bekam ich einen Fehler

ERROR! The server quit without updating PID ...

So habe ich es gelöst: Ich habe Applications/Utilities/geöffnet und Activity Monitor ausgeführt

 quit mysqld

konnte dann das fehlerproblem mit lösen

mysql.server restart
0
Kingsley Ijomah