Den „ERROR 1153“ beim Import großer Datenbanken lösen

Migrationen von WordPress-Seiten ist etwas, das ich wöchentlich mehrfach tue. Viele Migrationen sind zwischen lokalen Umgebungen oder Production und Staging. Nicht alle Quell- und Ziel-Systeme haben dabei unbedingt die gleichen Einstellungen. Manchmal muss man eine Seite mit einer großen Datenbank migrieren und stößt dabei eventuell auf diesen Fehler:

ERROR 1153 (08S01) at line 56: Got a packet bigger than 'max_allowed_packet' bytes

Das kann passieren, wenn ein einzelnes INSERT Statement beim Import zu groß ist. In diesem Beitrag möchte ich euch Tipps geben, wie ihr eine solche Datenbank importieren könnt.

Erstellen eines neuen Backups mit kleineren Imports

Wenn man eine Datenbank exportiert, dann verwendet man hierzu vermutlich das mysqldump Kommand, den wp db export Befehl oder ein Datenbank-Management-Tool wie Adminer oder phpMyAdmin. In den Standardeinstellungen werden hierbei INSERT Statements erstellt, die nicht nur eine Zeile in die Tabelle importieren, sondern mehrere auf einmal. Das ist oft auch eine gute Idee, da es den Import beschleunigt. Aber eben in genau diesen Fällen kommt es dann zu dem beschriebenen Fehler.

Um dies zu lösen, könnt ihr versuchen, einen Datenbank-Export zu erstellen, der immer nur ein Zeile in jedem INSERT Statement macht. Damit dauert der Import zwar etwas länger, er sollte aber erfolgreich durchlaufen.

Um einen solchen Export zu erstellen, könnt ihr die WP-CLI verwenden und ein paar mysqldump Argumente anhängen:

wp db export --extended-insert=FALSE --complete-insert=TRUE

Dies sollte eine solche Export-Datei erstellen. Jetzt solltet ihr diese hoffentlich importieren können

Erhöhen des Werts von „max_allowed_packet“

Wenn ihr noch immer das gleiche Problem habt, dann solltet ihr versuchen den Wert von „max_allowed_packet“ zu erhöhen. Der Standardwert kann vermutlich nur mit Administrationsrechten auf dem Server angepasst werden. Ihr könnt den Wert aber oft temporär ändern. Hierzu vebindet ihr euch zum MySQL-Server, erhöht den Wert und importiert dann die Datei. Ich verwende hierfür in meisten den wp db cli Befehl. Damit bin ich dann mit der richtigen Datenbank zu meiner WordPress-Installation verbunden. Anschließend führe ich dann die folgenden Befehle aus:

SET GLOBAL max_allowed_packet=1*1024*1024*1024;
SOURCE db_dump_filename.sql;

Der erste Befehl erhöht die Variable global auf 1 GB. Im Gegensatz zur MySQL-Konfigurationsdatei könnt iher hier als Wert nicht „1G“ im Statement verwenden, ihr müsst stattdessen den Wert in Bytes angeben. Ihr könnt aber eine Berechnung verwenden, daher habe ich diese Notation verwendet, mit der man besser erkennen kann, auf welchen Byte-Wert man die Variable setzt.

Fazit

Das Importieren von großen Datenbanken kann ein echtes Problem darstellen. Hoffentlich könnt ihr das Problem mit diesen Tipps selbst lösen. Falls nicht, fragt am besten jemanden mit Administrationsrechten, denn sie haben vermutlich entsprechenden Tools, um euch beim Import zu helfen. Und falls ihr selbst Daten in die Datenbank schreibt, dann achtet darauf, dass Zeilen nicht zu lang werden.

Veröffentlicht von

Bernhard ist fest angestellter Webentwickler, entwickelt in seiner Freizeit Plugins, schreibt in seinem Blog über WordPress und andere Themen, treibt sich gerne bei den WP Meetups in Berlin und Potsdam herum und läuft nach Feierabend den ein oder anderen Halbmarathon.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert