MySQL-Fehler „Row size too large“ beim Wiederherstellen eines Backups

Beim Wiederherstellen eines Backups auf einer anderen Website kann folgender Fehler auftreten:

„Could not restore query. MySQL has returned the error code 1118, with message ‚Row size too large (> 8126)’“

Oder alternativ:

„Your server reached the maximum row size of the table“

Dieses Problem wird dadurch verursacht, dass InnoDB die maximale Zeilengröße erreicht hat und keine weiteren Daten darin speichern kann.

Ursache

Die Ursache dieses Problems ist, dass die MySQL/MariaDB-Datenbank-Engine (InnoDB) ein Maximum für die Zeilengröße hat. Wenn dieses Limit überschritten wird, kann die Datenbank-Engine keine weiteren Daten in dieser Zeile speichern. Dieses Limit wird typischerweise beim Import großer Datensätze oder bei Tabellenstrukturen mit großen VARCHAR-Feldern erreicht.

Allgemeine Schritte zur Lösung des „Row Size Too Large“-Fehlers

Generell sind die Schritte zur Behebung:

  1. Tabellenfelder auf TEXT oder BLOB ändern, anstatt große VARCHAR zu verwenden.
  2. Das ROW_FORMAT der Tabelle auf DYNAMIC ändern.
  3. Den innodb_strict_mode auf off setzen.

Da diese Schritte Serverkonfigurationsänderungen und die Änderung der WordPress-Tabellenstruktur beinhalten, wird dies generell nicht empfohlen, da Datenverlust und andere Probleme auftreten können.

Einen Filter verwenden, um die Backup-Wiederherstellung zum Laufen zu bringen

Unser Ziel ist es, die SQL-Daten aus der Backup-Datei auf die aktuelle Seite zu importieren. Um dies zu erreichen, setzen wir den innodb_strict_mode während des Wiederherstellungsprozesses auf off.

Wenn dieser Fehler auftritt, kannst du den folgenden Code in ein Must-Use Plugin (MU-Plugin) einfügen, um den innodb_strict_mode zu deaktivieren:

PHP
<?php
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');

Schritt-für-Schritt-Anleitung

  1. Verbinde dich per FTP oder Dateimanager im Hosting-Kontrollpanel mit deiner WordPress-Seite.
  2. Navigiere zum Verzeichnis: wp-content/mu-plugins. Wenn das Verzeichnis mu-plugins nicht existiert, erstelle es.
  3. Erstelle im Verzeichnis mu-plugins eine neue PHP-Datei. Du kannst sie beliebig benennen, zum Beispiel disable-innodb-strict-mode.php.
  4. Bearbeite die neu erstellte PHP-Datei und füge den folgenden Code hinzu:
PHP
<?php
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');
  1. Speichere und schließe die Datei. Der Code wird nun bei jedem Seitenaufruf ausgeführt und stellt sicher, dass der innodb_strict_mode während des Wiederherstellungsprozesses deaktiviert ist.
  2. Versuche den Wiederherstellungsprozess über dein Backup-Plugin erneut. Der Fehler sollte nicht mehr auftreten.

Wichtiger Hinweis

Dies ist ein Workaround, um das MySQL-Zeilengrößenlimit während des Wiederherstellungsprozesses zu umgehen. Es ist keine dauerhafte Lösung des Problems, da ein deaktivierter innodb_strict_mode zu potenziellen Datenintegritätsproblemen führen kann. Erwäge nach dem Wiederherstellungsprozess, das MU-Plugin zu entfernen oder den Filter zu deaktivieren, und konsultiere einen Datenbankexperten für eine dauerhaftere Lösung des Zeilengrößenlimit-Problems.

Verwandte Artikel

Updated on März 6, 2026