it-swarm.com.de

MySQL-Fehler 1153 - Paket größer 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 ist auf meinem lokalen Rechner ein Mac, auf dem MySQL 5 aus dem MySQL-Paket installiert ist.

Wo ändere ich max_allowed_packet, um den Dump importieren zu können? 

Gibt es noch etwas, was ich einstellen sollte? 

Das Ausführen von mysql --max_allowed_packet=32M … ergab den gleichen Fehler.

386
kch

Sie müssen sie wahrscheinlich für den Client (den Sie ausführen, um den Import durchzuführen) UND den Daemon mysqld ändern, der ausgeführt wird und den Import akzeptiert.

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

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

Ändern Sie auch die Datei my.cnf oder my.ini unter dem Abschnitt mysqld, und legen Sie Folgendes fest:

max_allowed_packet=100M

oder Sie können diese Befehle in einer MySQL-Konsole ausführen, 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.)

517
Michael Pryor

Wie michaelpryor gesagt hat, müssen Sie es für beide den Client und den Daemon-Server mysqld ändern.

Seine Lösung für die Client-Befehlszeile ist gut, aber die Ini-Dateien lösen je nach Konfiguration nicht immer den Trick. 

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

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

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

118
Joshua Fox

Dies kann in Ihrer my.ini-Datei (unter Windows unter\Programme\MySQL\MySQL Server) unter dem Serverabschnitt geändert werden. Beispiel:

[mysqld]

max_allowed_packet = 10M
36
GHad

Reichen Sie my.cnf unter Mac OS X ein, wenn Sie MySQL aus der dmg-Paketverteilung von mysql.com verwenden

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

Sie müssen einen von /usr/local/mysql/support-files/my*.cnf in /etc/my.cnf kopieren und mysqld neu starten. (Was Sie im MySQL-Einstellungsbereich tun können, wenn Sie es installiert haben.)

15
kch

Versuchen Sie in etc/my.cnf, das max_allowed _packet und den net_buffer_length in zu ändern

max_allowed_packet=100000000
net_buffer_length=1000000 

wenn dies nicht funktioniert, wechseln Sie zu

max_allowed_packet=100M
net_buffer_length=100K 
12
Amirtha Rajan

Das Update besteht darin, das max_allowed_packet des MySQL-Daemons zu erhöhen. Sie können dies für einen laufenden Dämon 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 Dump:

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

In CENTOS 6 /etc/my.cnf lautet die korrekte Syntax unter [mysqld].

[mysqld]
# added to avoid err "Got a packet bigger than 'max_allowed_packet' bytes"
#
net_buffer_length=1000000 
max_allowed_packet=1000000000
#
5
Mike

Etwas unabhängig von Ihrem Problem, also hier eines für Google.

Wenn Sie das SQL nicht mysqldumpen, ist möglicherweise Ihr SQL defekt. 

Ich habe diesen Fehler nur erhalten, indem ich versehentlich ein nicht geschlossenes Zeichenfolgenliteral in meinem Code hatte. Schlampige Finger passieren.

Das ist eine fantastische Fehlermeldung, die Sie für eine überholte Zeichenfolge erhalten, danke für dieses MySQL!

4
jplindstrom

Verwenden Sie eine max_allowed_packet-Variable, die einen Befehl ausgibt

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

4

Manchmal Typeinstellung:

max_allowed_packet = 16M

in my.ini funktioniert nicht. 

Versuchen Sie, die my.ini wie folgt zu ermitteln:

set-variable = max_allowed_packet = 32M

oder

set-variable = max_allowed_packet = 1000000000

Starten Sie dann den Server neu:

/etc/init.d/mysql restart

Es ist ein Sicherheitsrisiko, max_allowed_packet einen höheren Wert zu haben, da ein Angreifer größere Pakete pushen und das System zum Absturz bringen kann. 

Also, Optimum Value von max_allowed_packet abgestimmt und getestet werden.

Es ist zu ändern, wenn nötig (mit set global max_allowed_packet = xxx) Als Teil von my.ini oder my.conf .

1
Shiva

Error:

FEHLER 1153 (08S01) in Zeile 6772: Paket größer als 'max_allowed_packet' Bytes Operation mit Exitcode 1 fehlgeschlagen

QUERY:

SET GLOBAL max_allowed_packet=1073741824;
SHOW VARIABLES LIKE 'max_allowed_packet'; 

Maximalwert:

Default Value (MySQL >= 8.0.3)  67108864
Default Value (MySQL <= 8.0.2)  4194304
Minimum Value   1024
Maximum Value   1073741824
0
TinhNQ

Setzen Sie max_allowed_packet auf den gleichen Wert (oder mehr) als beim Ablegen mit mysqldump. Wenn Sie dies nicht tun können, erstellen Sie den Speicherauszug erneut mit einem kleineren Wert.

Angenommen, Sie haben es mit mysqldump abgelegt. Wenn Sie ein anderes Werkzeug verwendet haben, sind Sie alleine.

0
MarkR

Ich arbeite in einer Shared Hosting-Umgebung und habe eine auf Drupal basierende Website gehostet. Ich kann die my.ini-Datei oder die my.conf-Datei auch nicht bearbeiten.

Also habe ich alle Tabellen gelöscht, die sich auf Cache bezogen haben, und daher konnte ich dieses Problem lösen. Ich suche immer noch nach einer perfekten Lösung, um dieses Problem zu lösen.

Bearbeiten - Das Löschen der Tabellen hat Probleme für mich verursacht, da Drupal erwartet hatte, dass diese Tabellen existieren sollten. Also habe ich den Inhalt dieser Tabellen geleert, wodurch das Problem gelöst wurde.

0