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.
Contents
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:
- Cambia i campi della tabella con TEXT o BLOB invece di usare grandi VARCHAR.
- Cambia il ROW_FORMAT della tabella in DYNAMIC.
- 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
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');Istruzioni passo passo
- Connettiti al tuo sito WordPress via FTP o File Manager nel pannello di controllo del tuo Hosting.
- Vai nella directory:
wp-content/mu-plugins. Se la directorymu-pluginsnon esiste, creala. - All’interno della directory
mu-plugins, crea un nuovo file PHP. Puoi chiamarlo come vuoi, ad esempio,disable-innodb-strict-mode.php. - Modifica il file PHP appena creato e aggiungi il seguente codice:
<?php
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');- Salva e chiudi il file. Ora, questo codice verrà eseguito a ogni caricamento di pagina, garantendo che
innodb_strict_modesia disattivato durante il processo di ripristino. - 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.