🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo solucionar error 'Table doesn't exist' en MySQL

Actualizado el 1 de marzo de 2026

¡Hola! Soy tu técnico de soporte de confianza. Si estás leyendo esto, seguramente te has topado con el molesto error "Table doesn't exist" en MySQL. No te preocupes, es un problema muy común y, en la mayoría de los casos, tiene una solución sencilla. Vamos a desglosarlo paso a paso, como si estuviéramos revisando el servidor juntos.

Este error significa que MySQL está intentando acceder a una tabla que, por alguna razón, no puede encontrar en la base de datos. Pero ojo, no siempre significa que la tabla haya sido borrada. A veces el problema es de permisos, de nombres mal escritos o incluso de un fallo en el sistema de archivos. Acompáñame a descubrir cómo solucionarlo.

¿Por qué aparece este error?

Antes de lanzarnos a las soluciones, es importante entender las causas más frecuentes. Así podrás identificarlo más rápido la próxima vez.

Causas comunes

  1. Nombre mal escrito: Suena a broma, pero es lo más habitual. Un simple error tipográfico en el nombre de la tabla o la base de datos puede provocar este error. MySQL es sensible a mayúsculas y minúsculas en sistemas Linux.
  2. Permisos incorrectos: El usuario de MySQL con el que te conectas puede no tener permisos para ver o acceder a esa tabla específica.
  3. Tabla borrada o no creada: Alguien (o un script) pudo haber eliminado la tabla por accidente, o quizás la migración de datos no se completó correctamente.
  4. Problemas de mayúsculas/minúsculas (case-sensitivity): Como mencioné, en Linux, MiTabla y mitabla son dos tablas diferentes. Si tu aplicación espera un nombre y MySQL tiene otro, obtendrás este error.
  5. Corrupción de la tabla o del archivo de la base de datos: Raro, pero puede pasar si el servidor se apagó de forma abrupta o hubo un error de disco.
  6. Engine de almacenamiento inconsistente: A veces, la tabla aparece en el diccionario de datos pero el archivo físico (.frm, .ibd, etc.) no existe o está dañado.

Paso 1: Verifica la ortografía y el nombre

Este es el primer lugar donde debes mirar. Es increíble la cantidad de veces que solucionamos problemas solo con revisar el nombre.

Cómo hacerlo

  1. Conéctate a MySQL desde tu terminal o panel de administración (como phpMyAdmin o Syspanel). Si usas Syspanel, recuerda que accedes a través del puerto 2106 (ejemplo: https://tudominio.com:2106).
  2. Lista las bases de datos: Ejecuta el comando:
    SHOW DATABASES;
    
  3. Selecciona la base de datos correcta: Usa USE nombre_de_tu_base;
  4. Lista las tablas: Ejecuta:
    SHOW TABLES;
    
  5. Compara los nombres. ¿La tabla que buscas aparece en la lista? Si aparece, comprueba que el nombre esté escrito exactamente igual (mayúsculas, minúsculas, guiones bajos). Si no aparece, la tabla no existe.

[TIP] Si estás usando un script (PHP, Python, etc.), revisa la línea de código donde se hace la consulta SQL. A veces el error está en la variable que contiene el nombre de la tabla.

Paso 2: Revisa los permisos del usuario de MySQL

Si la tabla existe pero el usuario con el que te conectas no tiene acceso, MySQL te devolverá este error (aunque a veces muestra un error de permisos genérico).

Pasos para verificar y otorgar permisos

  1. Identifica el usuario que está usando tu aplicación. Normalmente lo encuentras en el archivo de configuración (.env, config.php, wp-config.php, etc.).
  2. Conéctate como root o un usuario con privilegios administrativos.
  3. Verifica los permisos actuales:
    SHOW GRANTS FOR 'tu_usuario'@'localhost';
    
    Reemplaza localhost por el host desde el que se conecta (puede ser % para cualquier host).
  4. Si no tiene permisos sobre la tabla o base de datos, otórgaselos:
    GRANT ALL PRIVILEGES ON nombre_de_tu_base.* TO 'tu_usuario'@'localhost';
    FLUSH PRIVILEGES;
    

    [WARNING] No otorgues ALL PRIVILEGES en producción sin entender las implicaciones de seguridad. Mejor otorga solo los necesarios (SELECT, INSERT, UPDATE, DELETE).

Paso 3: Soluciona problemas de mayúsculas/minúsculas (case-sensitivity)

Si migraste tu sitio de un servidor Windows a uno Linux, este es un problema clásico. Windows no distingue mayúsculas de minúsculas en nombres de tablas, pero Linux sí.

Cómo solucionarlo

  1. Revisa la configuración de MySQL:
    SHOW VARIABLES LIKE 'lower_case_table_names';
    
    • Si el valor es 0: MySQL respeta las mayúsculas/minúsculas. Debes usar el nombre exacto.
    • Si el valor es 1: MySQL convierte todo a minúsculas. Tus tablas deben estar en minúsculas.
  2. Cambia el nombre de las tablas para que coincidan con lo que espera tu aplicación. La forma más segura es renombrar las tablas a minúsculas:
    RENAME TABLE MiTabla TO mitabla;
    
    Repite para cada tabla problemática.
  3. Alternativa (no recomendada en producción): Cambiar el valor de lower_case_table_names en el archivo de configuración de MySQL (my.cnf o my.ini), pero requiere reiniciar el servicio y puede causar otros problemas.

[INFO] Si usas Syspanel, puedes editar el archivo de configuración de MySQL desde la terminal con sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf y luego reiniciar con sudo systemctl restart mysql.

Paso 4: Repara una tabla corrupta

Si el error persiste y estás seguro de que la tabla existe y los permisos son correctos, puede que la tabla esté corrupta.

Métodos de reparación

  1. Usa el comando REPAIR TABLE: (Funciona principalmente con tablas MyISAM)
    REPAIR TABLE nombre_de_tabla;
    
  2. Usa mysqlcheck desde la terminal:
    mysqlcheck -u root -p --auto-repair nombre_de_base
    
    Esto revisará y reparará todas las tablas de esa base de datos.
  3. Para tablas InnoDB (el motor más común): InnoDB se repara de forma diferente. A veces hay que forzar la recuperación.
    • Edita el archivo my.cnf y agrega:
      [mysqld]
      innodb_force_recovery = 1
      
    • Reinicia MySQL: sudo systemctl restart mysql
    • Haz un mysqldump de la base de datos para exportar los datos.
    • Luego elimina la línea que agregaste y reinicia de nuevo.
    • Importa de nuevo el volcado.

[WARNING] Usar innodb_force_recovery es una medida drástica. Pon valores de 1 a 6, pero empieza siempre con 1. Valores altos pueden causar pérdida de datos. Haz un backup antes.

Paso 5: Recrea la tabla manualmente

Si la tabla realmente no existe y no tienes un backup reciente, tendrás que recrearla. Si tienes un backup (por ejemplo, de Syspanel o de tu panel de hosting), restáuralo.

Si no tienes backup, pero conoces la estructura

  1. Obtén el CREATE TABLE de otra copia de la base de datos (por ejemplo, de un entorno de desarrollo).
  2. Ejecútalo en tu base de datos:
    CREATE TABLE nombre_tabla (
        id INT AUTO_INCREMENT PRIMARY KEY,
        nombre VARCHAR(100) NOT NULL,
        ...
    ) ENGINE=InnoDB;
    
  3. Si tienes datos, pero no estructura: Puedes intentar crear una tabla temporal con el mismo nombre y luego usar ALTER TABLE para agregar columnas, pero es más sencillo reconstruir desde un backup.

FAQ: Preguntas frecuentes sobre el error "Table doesn't exist"

Aquí respondo las dudas más comunes que nos llegan al soporte.

1. ¿El error "Table doesn't exist" significa que perdí mis datos?

No necesariamente. Como hemos visto, puede ser un problema de permisos, nombre mal escrito o case-sensitivity. Solo si la tabla fue borrada físicamente y no tienes backup, entonces sí hay pérdida de datos. Siempre revisa los pasos anteriores antes de entrar en pánico.

2. ¿Cómo puedo evitar este error en el futuro?

  • Usa nombres consistentes: Pon todas las tablas en minúsculas y usa guiones bajos para separar palabras (ejemplo: usuarios_activos).
  • Haz backups regulares: Syspanel (puerto 2106) tiene herramientas de backup automáticas. Actívalas.
  • Configura lower_case_table_names=1 en el archivo de configuración de MySQL desde el principio, especialmente si tu servidor es Linux.
  • Revisa los logs de MySQL: Los errores suelen dejar pistas. Ejecuta sudo tail -f /var/log/mysql/error.log para ver en tiempo real.

3. ¿Qué hago si el error aparece después de una migración?

Es casi seguro que es un problema de case-sensitivity. Sigue el Paso 3 de este artículo. Renombra todas las tablas a minúsculas y asegúrate de que tu aplicación también las use en minúsculas.

4. ¿Puedo usar Syspanel para solucionar este error?

Sí, parcialmente. Syspanel (accesible vía puerto 2106) te permite:

  • Ver las bases de datos y tablas desde la interfaz web.
  • Restaurar backups de bases de datos.
  • Acceder a phpMyAdmin (si está instalado) para ejecutar consultas SQL.

Pero para reparar tablas corruptas o cambiar configuraciones de MySQL, necesitarás acceso a la terminal.

5. ¿El error puede deberse a un plugin o tema de WordPress?

Sí, es muy común. Si el error aparece después de instalar o actualizar un plugin/tema, ese plugin está intentando acceder a una tabla que no creó correctamente. Desactiva el plugin sospechoso (renombra su carpeta desde FTP o Syspanel) y mira si el error desaparece. Luego, revisa la documentación del plugin para saber qué tabla necesita.

Resumen y pasos finales

Para resumir, cuando veas el error "Table doesn't exist" en MySQL, sigue esta checklist:

  • Paso 1: Verifica el nombre de la tabla (mayúsculas, minúsculas, tipeo).
  • Paso 2: Revisa los permisos del usuario de MySQL.
  • Paso 3: Comprueba la configuración de case-sensitivity.
  • Paso 4: Intenta reparar la tabla (si está corrupta).
  • Paso 5: Recrea la tabla desde un backup o manualmente.

Recuerda que la paciencia es clave. Si después de todo esto el error persiste, no dudes en contactar a nuestro equipo de soporte. Proporciona el mensaje de error completo y los pasos que ya has intentado. ¡Estaremos encantados de ayudarte a resolverlo!

[INFO] Si usas Syspanel, recuerda que puedes acceder a la gestión de bases de datos desde tu panel de control en el puerto 2106. Allí también encontrarás herramientas de backup que pueden salvarte la vida en estos casos.

Espero que este artículo te haya sido de gran ayuda. ¡Nos vemos en el próximo tutorial!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel