Błąd MySQL — „Row size too large” podczas przywracania Backupu

Podczas przywracania Backupu na innej witrynie może wystąpić błąd:

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

Lub alternatywnie,

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

Problem ten spowodowany jest osiągnięciem maksymalnego rozmiaru wiersza w InnoDB — silnik nie może zapisać więcej danych.

Główna przyczyna

Główną przyczyną problemu jest to, że silnik bazy MySQL/MariaDB (InnoDB) ma limit maksymalnego rozmiaru wiersza. Po jego przekroczeniu silnik nie może zapisać więcej danych w tym wierszu. Limit ten zwykle pojawia się podczas próby importu dużych zbiorów danych lub gdy struktura tabeli zawiera duże pola VARCHAR.

Ogólne kroki rozwiązania błędu Row Size Too Large

Zazwyczaj kroki naprawcze to:

  1. Zmień pola tabeli na TEXT lub BLOB zamiast dużych VARCHAR.
  2. Zmień ROW_FORMAT tabeli na DYNAMIC.
  3. Ustaw innodb_strict_mode na off.

Te kroki wymagają zmian konfiguracji serwera i modyfikacji struktury tabel WordPressa, więc nie są zalecane ze względu na potencjalną utratę danych i inne problemy.

Użyj filtra, aby przywracanie Backupu zadziałało

Naszym celem jest zaimportowanie danych SQL z pliku Backupu na bieżącą witrynę. Aby to osiągnąć, podczas przywracania ustawiamy innodb_strict_mode na off.

Gdy pojawi się ten błąd, możesz dodać poniższy kod do pluginu Must-Use (MU-plugin), aby wyłączyć innodb_strict_mode:

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

Instrukcje krok po kroku

  1. Połącz się ze swoją witryną WordPress przez FTP lub File Manager w panelu hostingu.
  2. Przejdź do katalogu: wp-content/mu-plugins. Jeśli katalog mu-plugins nie istnieje, utwórz go.
  3. Wewnątrz katalogu mu-plugins utwórz nowy plik PHP. Możesz nazwać go dowolnie, np. disable-innodb-strict-mode.php.
  4. Edytuj nowo utworzony plik PHP i dodaj poniższy kod:
PHP
<?php
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');
  1. Zapisz i zamknij plik. Teraz kod ten będzie uruchamiany przy każdym ładowaniu strony, zapewniając wyłączenie innodb_strict_mode podczas przywracania.
  2. Spróbuj ponownie procesu przywracania z pluginu Backupu. Błąd nie powinien już występować.

Ważna uwaga

To jest obejście, które omija limit rozmiaru wiersza MySQL podczas przywracania. Nie jest to trwałe rozwiązanie problemu — wyłączenie innodb_strict_mode może prowadzić do potencjalnych problemów z integralnością danych. Po zakończeniu przywracania rozważ usunięcie MU-pluginu lub dezaktywację filtra i skonsultuj się z ekspertem od baz danych w sprawie trwalszego rozwiązania problemu limitu rozmiaru wiersza.

Powiązane artykuły

Updated on 23 maja, 2026

Rene Hermenau

Autor: Rene Hermenau

About the author: René Hermenau is the founder of WP STAGING. He works on WordPress backups, staging, migrations, database handling, and safe deployment workflows.