Cómo arreglar el error 'Table doesn't exist' en MySQL (PrestaShop, WordPress)
¿Qué significa el error “Table doesn't exist” en MySQL?
Si estás leyendo esto, probablemente te has encontrado con un mensaje de error similar a este en tu sitio web: “Table 'tu_base_de_datos.tu_tabla' doesn't exist”. No te preocupes, es uno de los problemas más comunes en MySQL y, en la mayoría de los casos, tiene solución. Este error puede aparecer en plataformas como WordPress o PrestaShop, y suele manifestarse de varias formas: una página en blanco, un mensaje de error en la pantalla, o incluso la imposibilidad de acceder al panel de administración.
Antes de entrar en pánico, respira hondo. Este error no significa necesariamente que hayas perdido tus datos. En la mayoría de las ocasiones, se debe a un problema de sincronización entre el motor de almacenamiento (como InnoDB) y los archivos físicos del servidor. Vamos a desglosarlo paso a paso, como si estuviéramos sentados frente a tu ordenador, para que puedas repararlo incluso si no eres un experto en bases de datos.
¿Por qué aparece el error “Table doesn't exist”?
Causas más comunes
Para arreglar algo, primero hay que entender por qué ocurre. Estas son las razones más frecuentes:
- Corrupción de la tabla: Un corte de luz, un fallo del servidor o una copia de seguridad mal restaurada pueden dañar la estructura interna de la tabla.
- Problemas con el motor InnoDB: A diferencia de MyISAM, InnoDB guarda los datos en un espacio de tablas común. Si ese archivo se corrompe, MySQL pierde la referencia de dónde está cada tabla.
- Migración o restauración incompleta: Si moviste tu sitio a otro hosting o restaurabas una copia de seguridad y el proceso se interrumpió, las tablas pueden no haberse creado correctamente.
- Borrado accidental: A veces, un plugin o un script mal configurado puede eliminar tablas sin querer.
- Permisos incorrectos: El usuario de MySQL que usa tu aplicación no tiene permisos para ver o acceder a esa tabla específica.
¿Cómo saber si es un problema de MySQL o de tu aplicación?
Un truco rápido es acceder a phpMyAdmin (o la herramienta de gestión de bases de datos de tu hosting) y buscar la tabla que menciona el error. Si no la ves en la lista, el problema es de MySQL. Si la ves pero al hacer clic te da error, entonces es un problema de corrupción interna. Vamos a ver cómo solucionarlo en ambos casos.
Primeros pasos: Haz una copia de seguridad (¡Sí o sí!)
[WARNING] Antes de tocar NADA, haz una copia de seguridad de tu base de datos. Si algo sale mal durante el proceso de reparación, podrías perder información. No quieres estar en esa situación.
Puedes hacer la copia desde phpMyAdmin (pestaña “Exportar”) o usando la línea de comandos si tienes acceso SSH:
mysqldump -u usuario -p nombre_base_datos > backup_seguro.sql
Guarda este archivo en un lugar seguro, como tu ordenador o un servicio de almacenamiento en la nube. Una vez hecho esto, ya puedes empezar a reparar.
Solución 1: Reparar la tabla con phpMyAdmin (la más fácil)
Esta es la opción más amigable para principiantes. phpMyAdmin tiene una herramienta de reparación integrada que funciona muy bien para errores de este tipo.
Paso a paso
- Accede a phpMyAdmin desde el panel de control de tu hosting. Si usas Syspanel (el panel de control que tienes en el puerto 2106), busca el acceso directo a bases de datos o a phpMyAdmin desde el menú principal.
- Selecciona tu base de datos en el panel izquierdo. Verás una lista de todas las tablas.
- Marca la casilla de la tabla que da el error (o selecciona todas si no estás seguro).
- En el menú desplegable inferior, elige “Reparar tabla” (o “Repair table”).
- Confirma la acción y espera unos segundos.
[INFO] Este comando ejecuta REPAIR TABLE en MySQL, que intenta reconstruir la estructura de la tabla y recuperar los datos dañados. No siempre funciona al 100%, pero es el primer paso lógico.
Si después de esto el error persiste, pasa a la siguiente solución.
Solución 2: Reparar la tabla desde la línea de comandos (SSH)
Si tienes acceso SSH a tu servidor, puedes hacer lo mismo pero con más control. Esta opción es especialmente útil si el error afecta a varias tablas o si phpMyAdmin no responde.
Conectarte por SSH
Abre tu terminal (en Mac o Linux) o usa PuTTY (en Windows) para conectarte a tu servidor. Necesitarás las credenciales SSH, que normalmente las encuentras en tu panel de control.
Ejecutar el comando de reparación
Una vez conectado, escribe:
mysql -u usuario -p
Te pedirá la contraseña y entrarás en el monitor de MySQL. Luego selecciona tu base de datos:
USE nombre_base_datos;
Y ejecuta la reparación:
REPAIR TABLE nombre_tabla;
Si quieres reparar todas las tablas de una vez, puedes usar el cliente mysqlcheck directamente desde la terminal:
mysqlcheck -u usuario -p --auto-repair nombre_base_datos
[TIP] Añade --force al final del comando para que intente reparar incluso las tablas que parecen más dañadas.
Solución 3: El problema de InnoDB (el más complicado)
Si las soluciones anteriores no funcionan, es muy probable que el problema esté en el motor InnoDB. Este motor guarda las tablas en un archivo llamado ibdata1 y en archivos .ibd dentro de la carpeta de datos de MySQL. Si estos archivos se corrompen, MySQL no puede encontrar las tablas.
Opción A: Activar innodb_force_recovery
Este es un modo de emergencia que permite arrancar MySQL aunque haya corrupción. Para ello:
- Accede al archivo de configuración de MySQL (normalmente
my.cnfomy.ini). - Añade esta línea bajo la sección
[mysqld]:innodb_force_recovery = 1 - Reinicia MySQL.
Esto hará que MySQL ignore los errores de corrupción y arranque. No lo uses como solución permanente, solo para poder acceder y hacer una copia de seguridad.
[WARNING] Este modo es de solo lectura. No podrás escribir en la base de datos. Úsalo solo para exportar tus datos y luego desactívalo.
Opción B: Exportar e importar la tabla dañada
Con el modo de recuperación activado, intenta exportar la tabla dañada:
mysqldump -u usuario -p nombre_base_datos nombre_tabla > tabla_danada.sql
Si la exportación funciona, genial. Ahora elimina la tabla dañada (si puedes) y vuelve a importarla:
mysql -u usuario -p nombre_base_datos < tabla_danada.sql
Solución 4: Recrear la tabla desde cero (para WordPress y PrestaShop)
A veces, la tabla está tan dañada que no se puede reparar. En ese caso, la solución es recrearla. La buena noticia es que tanto WordPress como PrestaShop tienen tablas con estructuras predefinidas que puedes volver a crear.
En WordPress
La tabla más común que da este error es wp_options o wp_posts. Si tienes una copia de seguridad reciente, restaura solo esa tabla. Si no, puedes crear una tabla vacía con la estructura correcta.
Accede a phpMyAdmin, selecciona tu base de datos y ve a la pestaña SQL. Ejecuta el siguiente comando (ajusta el prefijo wp_ si el tuyo es diferente):
CREATE TABLE wp_options (
option_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
option_name varchar(191) NOT NULL DEFAULT '',
option_value longtext NOT NULL,
autoload varchar(20) NOT NULL DEFAULT 'yes',
PRIMARY KEY (option_id),
UNIQUE KEY option_name (option_name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Luego, ve a la pestaña Importar y sube tu copia de seguridad de esa tabla.
En PrestaShop
PrestaShop tiene cientos de tablas, pero las más críticas suelen ser ps_products o ps_customer. El proceso es similar: busca la estructura de la tabla en la documentación oficial o en tu copia de seguridad y créala manualmente.
[INFO] Si no tienes una copia de seguridad, puedes descargar una instalación limpia de PrestaShop o WordPress y extraer la estructura de la tabla desde el archivo .sql incluido en el paquete de instalación.
Solución 5: Revisar los permisos del usuario de MySQL
Otra causa común es que el usuario de la base de datos no tenga permisos sobre la tabla. Esto puede pasar después de una migración.
Accede a phpMyAdmin como administrador y ve a la pestaña Privilegios. Asegúrate de que tu usuario tiene todos los permisos sobre la base de datos (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP).
Si no estás seguro, puedes simplemente otorgar todos los permisos con:
GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'tu_usuario'@'localhost';
FLUSH PRIVILEGES;
Solución 6: Usar herramientas de reparación externas
Si nada de lo anterior funciona, existen herramientas más avanzadas como Percona Toolkit o MySQL Workbench. Estas son más técnicas, pero pueden recuperar datos de tablas muy dañadas.
[WARNING] Estas herramientas requieren conocimientos avanzados de MySQL. Si no te sientes cómodo, es mejor contactar con el soporte de tu hosting. Si usas Syspanel (puerto 2106), el soporte técnico suele ser muy rápido y puede ayudarte a nivel de servidor.
Prevención: Cómo evitar que vuelva a pasar
Una vez que hayas solucionado el error, es crucial tomar medidas para que no se repita:
- Realiza copias de seguridad automáticas: Tanto a nivel de base de datos como de archivos. La mayoría de los paneles de control, incluido Syspanel, tienen opciones de copia de seguridad programadas.
- Actualiza tu CMS: Tanto WordPress como PrestaShop lanzan actualizaciones que corrigen errores de compatibilidad con MySQL.
- Usa un hosting de calidad: Los servidores con discos SSD y sistemas de energía redundante son menos propensos a sufrir corrupción de datos.
- Evita cortes de energía: Suena obvio, pero un UPS en tu servidor puede evitar muchos dolores de cabeza.
Preguntas frecuentes (FAQ)
¿Puedo perder datos si repara una tabla?
En la mayoría de los casos, no. La reparación intenta reconstruir la estructura y mantener los datos. Sin embargo, si la corrupción es severa, algunos registros pueden perderse. Por eso es vital hacer una copia de seguridad antes.
¿Por qué me da error solo en una tabla y no en todas?
Esto es normal. La corrupción puede afectar a un archivo específico sin dañar el resto. Es como un libro donde solo unas páginas están rotas.
¿El error “Table doesn't exist” afecta al SEO de mi sitio?
Sí, y mucho. Si tu sitio muestra un error de base de datos, los buscadores no podrán indexar tus páginas. Además, si el error dura mucho tiempo, Google puede penalizarte y quitar tu sitio de los resultados de búsqueda. Por eso es importante solucionarlo rápidamente.
¿Qué hago si no tengo acceso a phpMyAdmin?
Si tu hosting no te da acceso a phpMyAdmin, puedes usar herramientas como Adminer o acceder por SSH. También puedes contactar con el soporte de tu hosting para que ejecuten la reparación por ti.
¿Puedo prevenir este error con alguna configuración especial?
Sí, una buena práctica es configurar MySQL para que haga un chequeo automático de tablas al arrancar. Añade esta línea a tu my.cnf:
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
Esto no evita la corrupción, pero mejora la estabilidad general del servidor.
Resumen final
El error “Table doesn't exist” en MySQL es frustrante, pero casi siempre tiene solución. Empieza con las opciones más simples (phpMyAdmin) y ve subiendo en complejidad si es necesario. Recuerda:
- Siempre haz una copia de seguridad antes de reparar.
- Si no te sientes seguro, contacta con el soporte de tu hosting.
- Después de solucionarlo, implementa medidas de prevención.
Con un poco de paciencia y los pasos que te he dado, tu sitio de WordPress o PrestaShop volverá a estar funcionando en poco tiempo. Y si usas Syspanel, recuerda que puedes acceder a todas las herramientas de gestión desde el puerto 2106. ¡Mucha suerte con la reparación!
