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.
Contents
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:
- Tabellenfelder auf TEXT oder BLOB ändern, anstatt große VARCHAR zu verwenden.
- Das ROW_FORMAT der Tabelle auf DYNAMIC ändern.
- 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
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');Schritt-für-Schritt-Anleitung
- Verbinde dich per FTP oder Dateimanager im Hosting-Kontrollpanel mit deiner WordPress-Seite.
- Navigiere zum Verzeichnis:
wp-content/mu-plugins. Wenn das Verzeichnismu-pluginsnicht existiert, erstelle es. - Erstelle im Verzeichnis
mu-pluginseine neue PHP-Datei. Du kannst sie beliebig benennen, zum Beispieldisable-innodb-strict-mode.php. - Bearbeite die neu erstellte PHP-Datei und füge den folgenden Code hinzu:
<?php
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');- Speichere und schließe die Datei. Der Code wird nun bei jedem Seitenaufruf ausgeführt und stellt sicher, dass der
innodb_strict_modewährend des Wiederherstellungsprozesses deaktiviert ist. - 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.