519 Stimmen

MySQL-Fehler 1153 - Es wurde ein Paket empfangen, das größer ist als 'max_allowed_packet' bytes

Ich importiere einen MySQL-Dump und erhalte den folgenden Fehler.

$ mysql foo < foo.sql 
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes

Offenbar gibt es Anhänge in der Datenbank, was zu sehr großen Einfügungen führt.


Dies geschieht auf meinem lokalen Rechner, einem Mac, auf dem MySQL 5 aus dem MySQL-Paket installiert ist.

Wo kann ich ändern max_allowed_packet um den Speicherauszug importieren zu können?

Gibt es noch etwas, das ich einstellen sollte?

Einfach laufen mysql --max_allowed_packet=32M … führte zu demselben Fehler.

0 Stimmen

3 Stimmen

@Muleskinner, diese Frage wurde 3 Jahre vor der von Ihnen erwähnten Frage gestellt, und ich weise 4 Jahre nach Ihrem Kommentar darauf hin :p

2 Stimmen

Webyog.com Link ist defekt: 404

733voto

Michael Pryor Punkte 24198

Sie müssen sie wahrscheinlich sowohl für den Client (den Sie für den Import ausführen) als auch für den Daemon mysqld ändern, der läuft und den Import akzeptiert.

Für den Client können Sie ihn in der Befehlszeile angeben:

mysql --max_allowed_packet=100M -u root -p database < dump.sql

Auch, die Datei my.cnf oder my.ini ändern (normalerweise in /etc/mysql/) unter dem Abschnitt mysqld und setzen:

max_allowed_packet=100M

oder Sie könnten diese ausführen Befehle in einer MySQL-Konsole, die mit demselben Server verbunden ist:

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000;

(Verwenden Sie einen sehr großen Wert für die Paketgröße.)

140voto

Joshua Fox Punkte 16940

Wie michaelpryor schon sagte, müssen Sie es ändern für beide der Kunde y den Daemon mysqld server.

Seine Lösung für die Client-Befehlszeile ist gut, aber die ini-Dateien erfüllen je nach Konfiguration nicht immer den Zweck.

Öffnen Sie also ein Terminal, geben Sie mysql ein, um eine mysql-Eingabeaufforderung zu erhalten, und geben Sie diese Befehle ein:

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000; 

Lassen Sie die mysql-Eingabeaufforderung geöffnet, und führen Sie Ihre Befehlszeilen-SQL-Ausführung in einem zweiten Terminal aus.

49voto

GHad Punkte 9561

Dies können Sie in Ihrem my.ini Datei (unter Windows im Verzeichnis \Program Dateien \MySQL\MySQL Server) unter dem Abschnitt Server, zum Beispiel:

[mysqld]

max_allowed_packet = 10M

18voto

kch Punkte 73753

Re my.cnf auf Mac OS X bei Verwendung von MySQL aus der mysql.com dmg-Paketdistribution

Standardmäßig ist die Datei my.cnf nirgends zu finden.

Sie müssen einen der folgenden Punkte kopieren /usr/local/mysql/support-files/my*.cnf a /etc/my.cnf und Neustart mysqld . (Das können Sie im Einstellungsfenster von MySQL tun, wenn Sie es installiert haben).

17voto

Primoz Rome Punkte 9710

Die Lösung ist, die max_allowed_packet des MySQL-Daemons zu erhöhen. Sie können dies bei einem laufenden Daemon tun, indem Sie sich als Super anmelden und die folgenden Befehle ausführen.

# mysql -u admin -p

mysql> set global net_buffer_length=1000000;
Query OK, 0 rows affected (0.00 sec)

mysql> set global max_allowed_packet=1000000000;
Query OK, 0 rows affected (0.00 sec)

Dann importieren Sie Ihren Speicherauszug:

gunzip < dump.sql.gz | mysql -u admin -p database

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