Cómo reparar una base de datos corrupta en PrestaShop (tablas MyISAM/InnoDB)
¿Por qué se corrompe una base de datos de PrestaShop?
Si estás leyendo esto, probablemente te hayas encontrado con un mensaje de error como "Error de base de datos PrestaShop", una página en blanco o un aviso de que una tabla no existe. No te preocupes, es más común de lo que parece y, en la mayorÃa de los casos, tiene solución.
La base de datos es el corazón de tu tienda: guarda productos, pedidos, clientes y configuración. Cuando se corrompe, es como si el corazón latiera de forma irregular. Las causas más habituales suelen ser:
- Cortes de luz o apagados bruscos del servidor mientras se escribÃa información.
- Falta de espacio en disco, lo que impide que MySQL complete sus operaciones.
- Versiones incompatibles de PHP o MySQL tras una actualización.
- Plugins o módulos mal desarrollados que ejecutan consultas agresivas.
- Ataques o intentos de inyección SQL que dejan la base en un estado inconsistente.
El sÃntoma más claro es que tu tienda deja de cargar, o te muestra errores como "Table 'ps_product' doesn't exist" o "MySQL server has gone away". Pero tranquilo, aquà te explico paso a paso cómo reparar una base de datos corrupta en PrestaShop, tanto si usas tablas MyISAM como InnoDB.
Antes de empezar: haz una copia de seguridad (¡sà o sÃ!)
Este es el paso más importante de toda la guÃa. No intentes reparar nada sin una copia de seguridad. Si algo sale mal, podrÃas perder todos tus datos para siempre.
[WARNING] Una reparación mal hecha puede empeorar la corrupción. Siempre, siempre, siempre haz una copia de seguridad antes de tocar nada.
Para hacer una copia rápida, puedes usar la herramienta de exportación de phpMyAdmin. Si no sabes cómo acceder, suele ser a través del panel de control de tu hosting (cPanel, Plesk o el panel de tu proveedor). Si usas Syspanel (antes HestiaCP), recuerda que el acceso es por el puerto 2106 y desde ahà puedes gestionar las bases de datos.
Exporta solo la base de datos de PrestaShop en formato SQL. Guárdala en tu ordenador y, si puedes, también en la nube. Con eso ya tienes un colchón de seguridad.
Identifica el tipo de tabla: MyISAM e InnoDB
PrestaShop utiliza dos motores de almacenamiento principalmente:
- MyISAM: Es el más antiguo. Es rápido para lecturas, pero no soporta transacciones. Es más propenso a corromperse, pero también es más fácil de reparar.
- InnoDB: Es el moderno y el recomendado. Soporta transacciones y es más robusto, pero cuando se corrompe, la reparación es más delicada.
Para saber qué tipo de tabla tienes, ve a phpMyAdmin, selecciona tu base de datos y mira la columna "Tipo" o "Motor". Verás si dice MyISAM o InnoDB.
Método 1: Reparar base de datos PrestaShop con phpMyAdmin (el más fácil)
Esta es la vÃa más accesible para la mayorÃa de los usuarios, ya que no necesitas conocimientos avanzados de comandos.
Paso 1: Accede a phpMyAdmin
Entra en el panel de control de tu hosting y busca el icono de phpMyAdmin. Si usas Syspanel, recuerda que el puerto es el 2106. Una vez dentro, selecciona la base de datos de tu tienda PrestaShop en el menú lateral izquierdo.
Paso 2: Marca todas las tablas
En la parte inferior de la lista de tablas, verás una opción para "Marcar todas" o un enlace que dice "Seleccionar todo". Haz clic ahÃ. Verás que todas las tablas quedan resaltadas.
Paso 3: Elige la opción de reparar
En el desplegable que dice "Con selección:", busca la opción "Reparar tabla". Si tu base es MyISAM, verás que también aparece la opción "Comprobar tabla". Haz clic en "Reparar".
Paso 4: Espera el resultado
phpMyAdmin ejecutará el comando REPAIR TABLE en todas las tablas. Te mostrará un mensaje como OK o Table is already up to date. Si alguna tabla no se pudo reparar, te lo indicará.
[TIP] Si solo tienes una o dos tablas corruptas, puedes repararlas individualmente haciendo clic en el enlace "Reparar" que aparece bajo la columna "Acciones" de cada tabla.
Paso 5: Prueba tu tienda
Después de la reparación, intenta acceder a tu tienda. Si el problema era menor, con esto deberÃa bastar.
Método 2: Reparar tablas corruptas PrestaShop con comandos SQL
Si phpMyAdmin no te funciona o el error es más profundo, puedes usar comandos SQL directamente. Esto también lo haces desde phpMyAdmin, pero en la pestaña "SQL".
Para tablas MyISAM
Escribe este comando y ejecútalo:
REPAIR TABLE `ps_product`, `ps_orders`, `ps_customer`;
Puedes sustituir los nombres de las tablas por las que necesites. Si quieres reparar todas, puedes usar:
REPAIR TABLE `tu_basededatos`.*;
Pero esto último no siempre funciona en todos los entornos. Es más seguro listar las tablas.
Para tablas InnoDB
Con InnoDB, el comando REPAIR TABLE no siempre funciona. En su lugar, puedes intentar:
ALTER TABLE `ps_product` ENGINE=InnoDB;
Esto fuerza a MySQL a reconstruir la tabla. Si la tabla está muy dañada, puede que necesites primero ejecutar:
CHECK TABLE `ps_product`;
Y luego, si te da errores, intenta el ALTER TABLE.
[INFO] Si el ALTER TABLE falla, puede que necesites hacer un DROP y volver a importar esa tabla desde tu copia de seguridad. Es un proceso más tedioso, pero efectivo.
Método 3: Reparar MySQL desde la lÃnea de comandos (para avanzados)
Si tienes acceso SSH a tu servidor, puedes usar la herramienta mysqlcheck. Este método es muy potente y suele resolver casos que phpMyAdmin no puede.
Paso 1: Conéctate por SSH
Abre tu terminal y conéctate a tu servidor. Necesitarás las credenciales de acceso.
Paso 2: Ejecuta mysqlcheck
El comando básico es:
mysqlcheck -u usuario -p --auto-repair --databases nombre_base_datos
Te pedirá la contraseña. Este comando comprobará y reparará automáticamente las tablas dañadas.
Si quieres ser más especÃfico y reparar solo tablas MyISAM, usa:
mysqlcheck -u usuario -p --repair --databases nombre_base_datos
Para InnoDB, a veces es mejor usar:
mysqlcheck -u usuario -p --check --databases nombre_base_datos
Paso 3: Reinicia MySQL
Después de la reparación, es recomendable reiniciar el servicio de MySQL para que se limpien los cachés. Desde SSH:
sudo systemctl restart mysql
O si usas Syspanel, desde su panel de gestión también puedes reiniciar el servicio.
[WARNING] Los comandos SSH son potentes. Si no te sientes seguro, pide ayuda a tu proveedor de hosting o a un técnico. Un error aquà puede ser fatal.
Método 4: Reparar una base de datos InnoDB corrupta de forma manual
InnoDB es más complicado. Si los métodos anteriores no funcionan, puedes intentar esto:
Paso 1: Haz una copia de los archivos fÃsicos
Localiza la carpeta donde MySQL guarda los datos. Normalmente es /var/lib/mysql/. Copia la carpeta de tu base de datos a un lugar seguro.
Paso 2: Activa el modo de recuperación forzada
Edita el archivo de configuración de MySQL (my.cnf o my.ini) y añade estas lÃneas en la sección [mysqld]:
innodb_force_recovery = 1
Empieza con el valor 1. Si no funciona, cámbialo a 2, 3, etc., hasta que MySQL arranque. Cuanto más alto el número, más agresiva es la recuperación, pero también más arriesgada.
Paso 3: Exporta la base de datos
Con MySQL arrancado en modo de recuperación, intenta exportar la base de datos con mysqldump:
mysqldump -u usuario -p nombre_base_datos > backup.sql
Paso 4: Restaura la base de datos
Después de exportar, desactiva el modo de recuperación (quita las lÃneas que añadiste), reinicia MySQL y luego importa el backup:
mysql -u usuario -p nombre_base_datos < backup.sql
Este proceso es delicado, asà que ten paciencia y no te saltes pasos.
¿Qué hago si ninguna reparación funciona?
Si has probado todos los métodos y el error de base de datos en PrestaShop persiste, la última opción es restaurar desde tu copia de seguridad. Es un proceso más drástico, pero seguro.
Paso 1: Crea una base de datos nueva
Desde tu panel de control (o Syspanel, puerto 2106), crea una base de datos nueva y un usuario con todos los privilegios.
Paso 2: Importa tu backup
En phpMyAdmin, selecciona la base de datos nueva y en la pestaña "Importar", sube tu archivo SQL. Espera a que termine.
Paso 3: Actualiza el archivo de configuración de PrestaShop
Edita el archivo app/config/parameters.php de tu instalación de PrestaShop y cambia el nombre de la base de datos, el usuario y la contraseña por los nuevos.
Paso 4: Limpia la caché
Borra el contenido de la carpeta var/cache/ de tu PrestaShop para que los cambios se apliquen.
Preguntas frecuentes sobre la reparación de bases de datos en PrestaShop
¿Cuánto tiempo tarda en reparar una base de datos?
Depende del tamaño. Una tienda pequeña puede tardar segundos, una grande con miles de productos puede tardar varios minutos. No interrumpas el proceso.
¿Puedo prevenir la corrupción de tablas?
SÃ. Realiza copias de seguridad periódicas, asegúrate de que tu hosting tenga un sistema de alimentación ininterrumpida (SAI) y evita instalar módulos de fuentes dudosas.
¿Qué significa el error "Table is marked as crashed"?
Es tÃpico de MyISAM. Significa que la tabla se ha corrompido y necesita una reparación inmediata. Usa el método 1 y se solucionará.
¿Es mejor usar InnoDB que MyISAM en PrestaShop?
SÃ, InnoDB es más robusto y soporta transacciones. Si puedes, migra tus tablas a InnoDB. Puedes hacerlo desde phpMyAdmin seleccionando las tablas y cambiando el motor en la opción "Operaciones".
¿Necesito conocimientos técnicos avanzados para esto?
No. Con phpMyAdmin y los métodos 1 y 2 deberÃas poder resolver la mayorÃa de los casos. Solo los métodos 3 y 4 requieren conocimientos de servidor.
Conclusión: no pierdas la calma
Reparar una base de datos corrupta en PrestaShop es un proceso que, aunque pueda parecer abrumador, tiene solución en la gran mayorÃa de los casos. La clave está en actuar con calma, hacer una copia de seguridad antes de cualquier intento y seguir los pasos en orden del más simple al más complejo.
Empieza siempre por phpMyAdmin, que es la herramienta más amigable. Si no funciona, pasa a los comandos SQL y, solo si es necesario, llega a la lÃnea de comandos. Y recuerda: si en algún momento te sientes perdido, tu proveedor de hosting tiene la última palabra y suele ofrecer soporte técnico gratuito para este tipo de incidencias.
Una base de datos sana es sinónimo de una tienda rápida y fiable. Con estos trucos, podrás solucionar el error de base de datos en PrestaShop y volver a vender sin preocupaciones. ¡Manos a la obra!
