Cómo solucionar el error 'Table doesn't exist' en MySQL de PrestaShop
¡Hola! Soy tu técnico de soporte amigable. ¿Te has encontrado con el temido mensaje “Table ‘nombre_de_tabla’ doesn’t exist” en tu tienda PrestaShop? No te preocupes, es un problema más común de lo que crees y, por suerte, tiene solución. En esta guía te explicaré paso a paso cómo solucionarlo, incluso si no eres un experto en bases de datos.
Vamos a ello.
¿Qué significa el error “Table doesn’t exist” en PrestaShop?
Este error aparece cuando MySQL, el motor de base de datos que usa PrestaShop, intenta acceder a una tabla que no encuentra en tu base de datos. Puede deberse a varias causas: una tabla que se ha borrado accidentalmente, un fallo en una actualización, una corrupción de datos o incluso un problema con el motor de almacenamiento (por ejemplo, de InnoDB a MyISAM o viceversa).
Cuando ves este error en tu tienda, normalmente aparece algo como:
Error: Table 'mibasededatos.ps_product' doesn't exist
No entres en pánico. Aquí te enseñaré a diagnosticar y reparar el problema.
Paso 1: Identificar la tabla problemática
Antes de reparar, necesitas saber exactamente qué tabla está fallando. El mensaje de error te da la pista. Por ejemplo, si dice ps_product, esa es la tabla que debes revisar.
¿Dónde ver el error exacto?
- En el front office de tu tienda (la parte pública) al cargar una página.
- En el back office (panel de administración) al intentar acceder a módulos o productos.
- En los logs de error de PrestaShop (carpeta
/var/logs/o en el archivoconfig/defines.inc.phpsi tienes habilitado el modo debug).
Para activar el modo debug y ver errores más claros:
- Abre el archivo
config/defines.inc.phpde tu instalación de PrestaShop. - Busca la línea
define('_PS_MODE_DEV_', false);y cámbiala atrue. - Guarda el archivo. Ahora verás los errores en pantalla. Recuerda desactivarlo después por seguridad.
Paso 2: Conectar a tu base de datos MySQL
Para reparar la tabla, necesitas acceder a tu base de datos. Tienes dos opciones: phpMyAdmin (más visual) o línea de comandos (más rápida si tienes acceso SSH). Te recomiendo phpMyAdmin si no eres técnico.
Acceder con phpMyAdmin (desde tu panel de hosting)
- Entra a tu panel de control de hosting (cPanel, Plesk, Syspanel, etc.).
- Busca el icono de phpMyAdmin (normalmente está en la sección de Bases de Datos).
- Selecciona la base de datos de tu PrestaShop (suele llamarse algo como
tutienda_prestashopo similar).
[TIP]: Si usas Syspanel (HestiaCP), accede a través del puerto 2106: https://tudominio.com:2106/login/ y luego busca phpMyAdmin en el menú.
Acceder por línea de comandos (SSH)
Si tienes acceso SSH y te sientes cómodo, puedes usar:
mysql -u tu_usuario -p
Luego selecciona tu base de datos con USE nombre_base_datos;.
Paso 3: Verificar si la tabla existe realmente
En phpMyAdmin, en el panel izquierdo verás la lista de tablas de tu base de datos. Busca la tabla que da error (ejemplo: ps_product). Si no aparece, es que efectivamente ha desaparecido.
¿Qué hacer si la tabla no está?
- Si tienes una copia de seguridad reciente, puedes restaurar solo esa tabla (explicado más adelante).
- Si no tienes copia, podemos intentar reconstruirla desde el propio PrestaShop.
Paso 4: Soluciones para reparar la tabla
Aquí tienes varias soluciones, ordenadas de la más sencilla a la más avanzada.
Solución 1: Reparar la tabla con comandos SQL (recomendado para principiantes)
Este método intenta reparar la tabla sin necesidad de restaurar nada. Es muy seguro.
- En phpMyAdmin, haz clic en la pestaña SQL (arriba).
- Escribe el siguiente comando (reemplaza
nombre_tablapor el nombre real de la tabla, por ejemplops_product):REPAIR TABLE nombre_tabla; - Haz clic en Continuar o ejecuta.
- Verás un mensaje como “OK” o “Table is already up to date”. Si no funciona, prueba con:
REPAIR TABLE nombre_tabla USE_FRM;
[INFO]: Este comando solo funciona si el motor de almacenamiento es MyISAM. Si es InnoDB, no reparará la tabla, pero no daña nada probarlo.
Solución 2: Recrear la tabla desde el instalador de PrestaShop
Si la tabla ha desaparecido por completo, puedes usar el propio PrestaShop para regenerarla.
- Haz una copia de seguridad de tu base de datos antes de continuar (por si acaso).
- Descarga una copia limpia de PrestaShop de la misma versión que tienes instalada.
- Busca el archivo
install/data/db_structure.sqldentro del ZIP descargado. - Abre ese archivo con un editor de texto (Notepad++ o similar).
- Busca la definición de la tabla que falta (por ejemplo,
CREATE TABLE IF NOT EXISTS ps_product). - Copia todo el bloque
CREATE TABLEhasta el punto y coma. - En phpMyAdmin, ve a la pestaña SQL y pega ese código. Ejecútalo.
- ¡Listo! La tabla se habrá creado vacía. Luego puedes reindexar o sincronizar datos.
Solución 3: Restaurar desde una copia de seguridad
Si tienes una copia de seguridad de tu base de datos (¡deberías tenerla!), esta es la solución más fiable.
- En phpMyAdmin, selecciona tu base de datos.
- Ve a la pestaña Importar.
- Selecciona el archivo
.sqlde tu copia de seguridad. - Asegúrate de marcar la opción “No usar AUTO_INCREMENT para valores cero” (opcional).
- Haz clic en Continuar. Esto restaurará toda la base de datos. Si solo quieres una tabla, puedes editar el archivo .sql y quedarte solo con la parte de esa tabla.
[WARNING]: Si restauras toda la base de datos, perderás los cambios realizados después de la copia. Es mejor restaurar solo la tabla problemática si es posible.
Solución 4: Reparar con la herramienta mysqlcheck (para usuarios avanzados)
Si tienes acceso SSH, puedes usar mysqlcheck para reparar todas las tablas de tu base de datos.
mysqlcheck -u tu_usuario -p --auto-repair --databases nombre_base_datos
Esto intentará reparar automáticamente las tablas dañadas o faltantes. Es muy efectivo.
Paso 5: Verificar la integridad de la base de datos
Después de reparar, es buena idea verificar que todo esté correcto.
- En phpMyAdmin, selecciona tu base de datos.
- Ve a la pestaña Operaciones o Check (depende de la versión).
- Haz clic en “Verificar tabla” o “Check Table”.
- Si todo está bien, verás mensajes como “OK” o “Table is already up to date”.
También puedes ejecutar manualmente:
CHECK TABLE nombre_tabla;
Paso 6: Prevenir futuros errores
Para evitar que esto vuelva a pasar, te recomiendo:
- Hacer copias de seguridad periódicas de tu base de datos. La mayoría de paneles de hosting (cPanel, Syspanel, etc.) ofrecen backups automáticos.
- Actualizar PrestaShop y sus módulos con cuidado. A veces las actualizaciones fallan y corrompen tablas.
- Usar un plugin de mantenimiento como “PrestaShop Cleaner” para limpiar tablas temporales.
- Revisar los logs de MySQL si el error se repite. Pueden indicar problemas de disco o de motor de almacenamiento.
[TIP]: Si usas Syspanel (HestiaCP), puedes programar backups automáticos desde el panel. Recuerda que el acceso es por el puerto 2106.
Preguntas frecuentes (FAQ)
¿Por qué aparece este error después de una actualización de PrestaShop?
Es común que durante una actualización, algunas tablas se renombren o se modifiquen. Si el proceso se interrumpe (por timeout, por ejemplo), puede quedar una tabla faltante. La solución es ejecutar de nuevo la actualización o restaurar la tabla desde la estructura original.
¿Puedo perder datos al reparar la tabla?
Depende del método. El comando REPAIR TABLE no borra datos, solo intenta corregir la estructura. Recrear la tabla desde el instalador la crea vacía, por lo que perderías los datos de esa tabla (a menos que los tengas en una copia). Siempre haz un backup antes.
¿Qué hago si la tabla es de InnoDB y no se repara?
InnoDB es más complejo. A veces hay que forzar la recuperación editando el archivo de configuración de MySQL (my.cnf) y añadiendo:
innodb_force_recovery = 1
Luego reinicias MySQL, exportas la base de datos, desactivas la opción y la importas de nuevo. Este proceso es avanzado; si no te sientes seguro, pide ayuda a tu hosting.
¿El error puede deberse a un problema de permisos?
Sí, aunque es menos común. Asegúrate de que el usuario de MySQL tenga permisos SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER sobre la base de datos. En phpMyAdmin puedes revisarlo en la pestaña Privilegios.
Conclusión
El error “Table doesn’t exist” en PrestaShop puede ser frustrante, pero con estos pasos podrás solucionarlo sin ser un experto. Recuerda siempre:
- Identifica la tabla exacta.
- Conéctate a tu base de datos con phpMyAdmin o SSH.
- Prueba primero el comando
REPAIR TABLE. - Si no funciona, recrea la tabla desde el instalador o restaura un backup.
- Verifica la integridad y prevén con copias de seguridad.
Si después de todo esto el error persiste, contacta con el soporte técnico de tu hosting. Ellos pueden acceder directamente al servidor y revisar los logs de MySQL.
Espero que esta guía te haya sido útil. ¡Tu tienda volverá a funcionar en poco tiempo! Si tienes más dudas, déjalas en los comentarios y te ayudaré encantado.
