Al restaurar un Backup en otro sitio web, puede aparecer el siguiente error:
«No se pudo restaurar la consulta. MySQL ha devuelto el código de error 1118, con el mensaje ‘Row size too large (> 8126)’»
O alternativamente,
«Tu servidor ha alcanzado el tamaño máximo de fila de la tabla»
Este problema se debe a que InnoDB ha alcanzado el tamaño máximo de fila y no puede almacenar más datos.
Contents
Causa raíz
La causa raíz de este problema es que el motor de base de datos MySQL/MariaDB (InnoDB) tiene un límite máximo de tamaño de fila. Cuando se supera este límite, el motor de base de datos no puede almacenar más datos en esa fila. Este límite se suele encontrar al intentar importar conjuntos de datos grandes o cuando la estructura de la tabla incluye campos VARCHAR grandes.
Pasos generales para solucionar el error «Row size too large»
En general, los pasos para solucionar esto son:
- Cambiar los campos de la tabla a TEXT o BLOB en lugar de usar VARCHAR grandes.
- Cambiar el ROW_FORMAT de la tabla a DYNAMIC.
- Establecer innodb_strict_mode en desactivado.
Como estos pasos implican cambios en la configuración del servidor y modificaciones en la estructura de las tablas de WordPress, generalmente no se recomiendan debido al riesgo de pérdida de datos y otros problemas.
Usar un filtro para que la restauración del Backup funcione
Nuestro objetivo es importar los datos SQL del archivo de Backup al sitio actual. Para lograrlo, desactivamos el innodb_strict_mode durante el proceso de restauración.
Cuando se produce este error, puedes añadir el código siguiente a un plugin Must-Use (MU-plugin) para desactivar el innodb_strict_mode:
<?php
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');Instrucciones paso a paso
- Conéctate a tu sitio WordPress mediante FTP o el gestor de archivos en el panel de control de tu Hosting.
- Navega al directorio:
wp-content/mu-plugins. Si el directoriomu-pluginsno existe, créalo. - Dentro del directorio
mu-plugins, crea un nuevo archivo PHP. Puedes llamarlo como quieras, por ejemplo,disable-innodb-strict-mode.php. - Edita el archivo PHP recién creado y añade el siguiente código:
<?php
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');- Guarda y cierra el archivo. Ahora este código se ejecutará en cada carga de página, asegurándose de que el
innodb_strict_modeesté desactivado durante el proceso de restauración. - Vuelve a intentar el proceso de restauración desde tu Plugin de Backup. El error ya no debería aparecer.
Nota importante
Esta es una solución temporal para evitar el límite de tamaño de fila de MySQL durante el proceso de restauración. No es una solución permanente al problema, ya que tener el innodb_strict_mode desactivado puede provocar posibles problemas de integridad de datos. Después del proceso de restauración, considera eliminar el MU-plugin o desactivar el filtro, y consulta con un experto en bases de datos para obtener una solución más permanente al problema del límite de tamaño de fila.