Saltar al contenido

Error mysql ‘table’ doesn’t exist in engine

No hace mucho me encontré con un problema a la hora de realizar una copia de seguridad de un sitio WordPress pues no paraba de recibir un error que informaba de que la tabla ‘wp_wfNet404s’ no existía en el engine. En un primer momento, pensé que por algún tipo de error no se había creado pero al examinar la base de datos mysql si que aparecía. Es más, no podía ni borrarla ni renombrarla y si intentaba acceder a ella recibía un error.

Porqué recibimos el error en mysql ‘table’ doesn’t exist in engine

Tras investigar un poco resulta que en principio no es una tabla sino una vista. En raras ocasiones un error de mysql bloquea la vista y aparece en el sistema como una tabla «en uso». Sin embargo, al no ser una tabla real el sistema lo interpreta como una tabla corrupta y no permite operar con ella.

El principal problema es que nos impide realizar un mysql_dump o una copia de seguridad que no vaya tabla a tabla. Especialmente duro si no tienes una copia de seguridad relativamente reciente.

Solución

La solución más sencilla que he encontrado y que funciona sin borrar la base de datos ni reiniciar el servicio mysql es eliminar o renombrar los archivos de mysql directamente. Para ello debemos acceder por ssh al servidor y buscar los fichoros .frm que mysql guarda de cada tabla. Esto depende de cada sistema pero en el caso de una instalación Centos con Plesk los encontramos en /var/lib/mysql.

Estos archivos siguen la nomenclatura /var/lib/mysql/<nombre_base_de_datos>/<nombre_de_tabla>.frm. Debemos buscar el archivo de la tabla en cuestión y renombrarlo o eliminarlo. En mi caso lo renombre añadiéndole la extensión .bck por si me fuese necesario recuperarla (que no fue el caso).

Una vez hecho esto debe de haber desaparecido al hacer SHOW TABLES. En caso de que os sigan apareciendo puede ser por un tema de cache interna de mysql. Probad a usar un FLUSH TABLES por si eso lo soluciona.

Y con esto tenemos solucionada y funcionando de nuevo nuestra base de datos.

8 comentarios en «Error mysql ‘table’ doesn’t exist in engine»

    1. No recuperas los datos de dicha tabla pero si el acceso a la base de datos, que en mi caso era lo más importante. Siempre puedes recuperar los datos de una copia de seguridad anterior o restaurar la base de datos por completo. Sin embargo sin solucionar antes el error era imposible.

      Gracias por comentar.

    1. Lamento que no te haya servido la solución, Diego. Esta solución está basada en mi experiencia y en los errores que he encontrado yo mismo. Sin embargo, es posible que tu problema sea diferente y por eso no funcione en tu caso.

      Un saludo y gracias por comentar.

      1. Hola, este caso sirve solo si quieren eliminar permanentemente la información, si les pasa eso por algún error extraño y quieren recuperar la información borren los archivos ib_logfile de la carpeta data. Haciendo eso en mi caso funciono sin necesidad de ir por un ibdata viejo, buscar un respaldo ni nada de lo anterior.

        En cuestiones de instalaciones nuevas donde quieras copiar solo la carpeta de data si requieres hacer la actualización correspondiente. Solo sirve en casos que ya funcionaba. Y no te permitía iniciar de nuevo por un error en el ibdata1.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.