Cómo reparar tablas marcadas como defectuosas o corruptas en MySQL

Desde hace más de un año usábamos el plugin Counterizer para WordPress y así llevar estadísticas del blog y sus lectores, este plugin lo desactivamos hace unos pocos días ya que (entre otras cosas) guardaba en la base de datos más de 600MBs de datos.

Sucede que (antes de desactivar el plugin y limpiar la DB) intenté hacer un dump de la base de datos, o sea, exportarla a .SQL y así descargarla y en la terminal del hosting me apareció el siguiente error:

mysqldump: Got error: 144: Table './dl_database/Counterize_Referers' is marked as crashed and last (automatic?) repair failed when using LOCK TABLES

Por lo que, el dump no se efectuaba y bueno… la solo idea de pensar que la DB de DesdeLinux tenía algún problema me puso los pelos de punta 🙂

Haciendo un poco de investigación por la web pude aprender a solucionar este problema, al parecer NO es que la base de datos tenga problemas exactamente, simplemente que una tabla está marcada como ‘con problemas’, afortunadamente esto es muy simple de arreglar.

Primero accedamos al servidor MySQL:

mysql -u root -p

Presionamos [Enter] y nos pedirá el password del root del MySQL, lo ponemos y presionamos [Enter] de nuevo.

Este comando es en caso de que el servidor MySQL esté instalado en ese mismo ordenador, si desean conectarse de forma remota a otro servidor MySQL deben agregar a la línea lo siguiente: -h IP-DE-SERVIDOR

Una vez dentro de MySQL le indicaremos qué base de datos usar, por ejemplo el problema según el error de arriba está en la tabla Counterize_Referers de la base de datos  dl_database, por lo que:

use database dl_database;

Y ahora a reparar la base de tabla:

repair table Counterize_Referers;

Noten que al final de estas líneas hay un punto y coma —–»  ;

Una vez ejecutado el comando anterior todo debe haber vuelto a la normalidad, al menos en mi caso ha sido así en más de una ocasión 😉

Luego solo queda volver a ejecutar la instrucción para hacer el dump de la base de datos y listo, nada más.

En fin, hago esto más que otra cosa como un memorandum para mí, pues ya me ha sucedido lo mismo en dos ocasiones y no quiero olvidar las instrucciones para salvarme el día 😀

Saludos y espero le resulte de ayuda a alguien más.


Deja tu comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Leo dijo

    Muy bueno, siempre hay que tener este tipo de articulos a mano por cualquier cos.

    1.    KZKG^Gaara dijo

      Gracias 🙂
      Sí… en el momento cuando ocurre el problema, es bueno tener a mano la solución, o al menos saber dónde encontrarla sin demora.

  2.   eliotime3000 dijo

    Buena KZKGGaara. Hay cosas que el PHPMyAdmin no puede hacer lo que sí puede hacer la consola.

    1.    KZKG^Gaara dijo

      Gracias 🙂

  3.   Santiago dijo

    Excelente, me salvó más de una vez.

    Pero pregunto, no sería mysql-u root -p en vez de root -u root -p? Preunto sin ánimo de ofender.

    Gracias!!

  4.   Santiago dijo

    Excelente, me salvó más de una vez.
    Pero pregunto, no sería mysql-u root -p en vez de root -u root -p? Pregunto sin ánimo de ofender.
    Gracias

    1.    KZKG^Gaara dijo

      LOL!!!! Completamente cierto, mi error LOL!
      Estaba escribiendo y pensando un paso más adelantado, de ahí a que escribiera root en vez de mysql … Gracias por el aviso 🙂

      1.    Santiago dijo

        De nada! Perdón por el doble post; lo intente enviar en oportunidades seguidas y me decía que ya existía (yo recargaba la página y no veía nada).
        Saludos.

  5.   Leproso_Ivan dijo

    Esto me viene de pelos ahora que me estoy metiendo con el tema de las DB..

  6.   alejandro dijo

    Hola buenas,

    una pregunta, ¿cada cuánto haces dump de DB? es para saber cuánto tiempo tarda en llegar hasta los 600MB de data

    Un saludo,

    1.    KZKG^Gaara dijo

      Ehm… no te entendí muy bien ahora 🙂
      Antes de que hiciéramos una limpieza en la DB de DesdeLinux esta (o sea, el .sql de la DB) pesaba más de 700MB, porque guardábamos en la DB todas las estadísticas. O sea, desde casi el inicio del blog.

      Ahora estamos usando Google A. por lo que borramos las tablas de estadísticas de la DB, y ahora no llega a los 80MB el .sql

      ¿responde esto a tu pregunta?

  7.   alejandro dijo

    Hola buenas,

    Sin anino de trollear, cada cuanto haces dump de DB?

    1.    KZKG^Gaara dijo

      Varias veces al mes 🙂
      Intento siempre tener en mi localhost la última versión de DesdeLinux

  8.   te gusta compralo!! dijo

    me parece ok, ahora no se puede hacer una revision a modo general de las tablas corruptas?

  9.   Victoria dijo

    muchas gracias amigo me ayudo mucho tu aporte.
    Saludos

  10.   Juan Mollega dijo

    Muchas gracias estimado, gracias por los tips, me sirvieron de ayuda!!
    Saludos desde Trujillo-Venezuela.

  11.   hernan barra dijo

    estimado
    como se si el proceso esta corriendo escribi el comando repair table import; y ai quedo

  12.   Andre Cruz dijo

    Muchas Gracias, me has salvado el pellejo 😀

  13.   Marco dijo

    Hola amigo, no sé si me puedas ayudar, algo parecido ocurrió con mi web.Marca este error:
    La tabla wp_posts no está bien. Informa del siguiente error: Table is marked as crashed and last repair failed. WordPress intentará reparar esta tabla…
    Error al reparar la tabla wp_posts. Error: Table is marked as crashed and last repair failed

    No sé si me puedas ayudar a solucionarlo, soy nuevo con WordPress avanzado. Al intentar reparar la tabla wp- post marca error de que no se puede reparar. Gracias. Mi web es : https://diarionoticiasweb.com