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.

Deja un comentario

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