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.
Contents
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:
- Zmień pola tabeli na TEXT lub BLOB zamiast dużych VARCHAR.
- Zmień ROW_FORMAT tabeli na DYNAMIC.
- 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
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');Instrukcje krok po kroku
- Połącz się ze swoją witryną WordPress przez FTP lub File Manager w panelu hostingu.
- Przejdź do katalogu:
wp-content/mu-plugins. Jeśli katalogmu-pluginsnie istnieje, utwórz go. - Wewnątrz katalogu
mu-pluginsutwórz nowy plik PHP. Możesz nazwać go dowolnie, np.disable-innodb-strict-mode.php. - Edytuj nowo utworzony plik PHP i dodaj poniższy kod:
<?php
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');- Zapisz i zamknij plik. Teraz kod ten będzie uruchamiany przy każdym ładowaniu strony, zapewniając wyłączenie
innodb_strict_modepodczas przywracania. - 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.