Errore MySQL – “Row size too large” durante il ripristino di un Backup

Durante il ripristino di un Backup su un altro sito, può verificarsi un errore che afferma:

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

Oppure in alternativa,

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

Questo problema è causato dal fatto che InnoDB ha raggiunto la dimensione massima della riga e non può memorizzare altri dati.

Causa principale

La causa principale di questo problema è che il motore di database MySQL/MariaDB (InnoDB) ha un limite massimo per la dimensione della riga. Quando questo limite viene superato, il motore di database non riesce a memorizzare altri dati in quella riga. Questo limite viene tipicamente incontrato quando si cerca di importare grandi dataset o quando la struttura della tabella include grandi campi VARCHAR.

Passi generali per risolvere l’errore Row Size Too Large

In generale, i passi per risolvere sono:

  1. Cambia i campi della tabella con TEXT o BLOB invece di usare grandi VARCHAR.
  2. Cambia il ROW_FORMAT della tabella in DYNAMIC.
  3. Imposta innodb_strict_mode su off.

Poiché questi passi comportano modifiche alla configurazione del server e alterazioni della struttura della tabella WordPress, generalmente non sono consigliati a causa del potenziale di perdita di dati e altri problemi.

Usa un filter per far funzionare il ripristino del Backup

Il nostro obiettivo è importare i dati SQL dal file di Backup sul sito attuale. Per raggiungere questo obiettivo, impostiamo innodb_strict_mode off durante il processo di ripristino.

Quando si verifica questo errore, puoi aggiungere il codice qui sotto in un Must-Use Plugin (MU-Plugin) per disattivare innodb_strict_mode:

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

Istruzioni passo passo

  1. Connettiti al tuo sito WordPress via FTP o File Manager nel pannello di controllo del tuo Hosting.
  2. Vai nella directory: wp-content/mu-plugins. Se la directory mu-plugins non esiste, creala.
  3. All’interno della directory mu-plugins, crea un nuovo file PHP. Puoi chiamarlo come vuoi, ad esempio, disable-innodb-strict-mode.php.
  4. Modifica il file PHP appena creato e aggiungi il seguente codice:
PHP
<?php
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');
  1. Salva e chiudi il file. Ora, questo codice verrà eseguito a ogni caricamento di pagina, garantendo che innodb_strict_mode sia disattivato durante il processo di ripristino.
  2. Riprova il processo di ripristino dal tuo Plugin di Backup. L’errore non dovrebbe più verificarsi.

Nota importante

Questa è una soluzione alternativa per aggirare il limite di dimensione della riga MySQL durante il processo di ripristino. Non è una soluzione permanente al problema, poiché avere innodb_strict_mode disattivato può portare a potenziali problemi di integrità dei dati. Dopo il processo di ripristino, considera di rimuovere il MU-Plugin o disattivare il filter e consulta un esperto di database per una soluzione più permanente al problema del limite della dimensione della riga.

Articoli correlati

Updated on Maggio 23, 2026

Rene Hermenau

Autore: 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.