Clicky

MySQL : Table was marked as crashed and should be repaired

Il y a des moments, comme ça, où tu te prends de sacrés coups de flippe. Tenez, par exemple, ce matin, votre humble serviteur s’est mis en tête de faire un peu de ménage dans sa base de données, le tout avec les sauvegardes qui vont bien. Il commence donc par réparer sa base, par l’optimiser avant de la sauvegarder et de redémarrer ensuite dans la foulée son serveur SQL. Normal, c’est le genre de truc qu’on fait toutes les semaines. Sauf que voilà, quelques minutes plus tard, tout a basculé. Genre bien comme il faut… Et pour cause puisque tous mes articles avaient… disparu. Tous ? Oui, tous, vraiment tous, absolument tous, plus de 7.000 articles envolés en quelques secondes. Mais si ça vous arrive à vous aussi, si vous êtes confrontés à une vilaine erreur de type « table was marked as crashed and should be repaired », sachez que la solution est toute simple…

MySQL : Table was marked as crashed and should be repaired

D’où vient ce problème ?

Faut évidemment commencer par le début du commencement, et prendre ainsi le temps de s’interroger sur l’origine du problème. Forcément, chez vous, vous n’aurez pas forcément le même cas de figure mais, chez moi, je peux au moins vous dire ce qu’il s’est passé. En fait, tout est de ma faute. C’était de mon matin, je n’avais donc pas les yeux en face des trous. J’ai donc lancé une réparation de ma base de données puis, sans attendre que l’opération ne soit complètement terminée, j’ai demandé le redémarrage de mon serveur SQL. Forcément, l’opération de réparation n’a pas pu aboutir et le processus s’est donc bloqué. Sauf que voilà, lorsqu’on lance la réparation d’une table, cette dernière est comme verrouillée (ou, si vous préférez, marquée comme étant « in use »).

Et forcément, lorsqu’elle est verrouillée, elle devient complètement inutilisable et toutes les données qu’elle contient sont donc inaccessibles. Ceci expliquant cela, on comprend donc pourquoi tous mes articles ont subitement disparu de mon site et de mon WordPress.

La solution… simple comme « bonjour »

Bien heureusement, la solution est assez simple, en fait. En fait, pour commencer, il faut se connecter à son PhpMyAdmin. Bon, normalement, vous devez déjà savoir comment faire, alors je ne vais pas creuser ce point plus en avant. Une fois que vous êtes bien connectés, il faut afficher votre base. Là, vous aurez la liste de toutes les tables qu’elle contient qui apparaîtra à l’écran. Et vous pourrez d’ailleurs remarquer que celle qui déconne chez vous est marquée « in use » et bien mise en évidence. Là, c’est sûr, quelque chose ne tourne pas rond.

Ensuite, il faut cocher la case de la table qui déconne. Chez moi, c’était « wp-posts », évidemment. Puis, un peu plus bas, il faudra cliquer sur la liste déroulante « Pour la sélection » et choisir l’option « Réparer ». Quelques secondes plus tard, tout devrait rentrer dans l’ordre et vous devriez laisser s’échapper comme un énorme soupir de soulagement. Personnellement, j’ai même été jusqu’à couiner.

Point important en revanche, il est vraiment préférable de passer directement par PhpMyAdmin (ou par la console de votre serveur éventuellement) pour lancer cette réparation. Au début, j’ai tenté de le faire par DB_Manager (une extension WordPress) mais ça n’a pas fonctionné.

Bon bah plus de peur que de mal, hein…

Share this post

Fred

Floodeur compulsif, est très actif sur Twitter ou encore sur Facebook. Sachez en outre que la Fredzone a une page sur Google+.

11 comments

Ajouter le votre.
  1. Steph 9 mai, 2012 at 08:39 Répondre

    C’est vrai que ces situations sont assez stressantes, et la panique s’installe assez vite.

    Merci pour ce point technique qu’il faut garder sous le coude, on ne sait jamais.

  2. Damnnnn 18 juin, 2013 at 05:57 Répondre

    Wow. Je viens de faire une grosse query sur ma table d’utilisateurs, avec plus de 600,000 records ET BOOM. Je ne pouvais plus me loggé in! J’ai paniqué… J’ai vue « In use » et j’ai laché un gros soupire de satisfaction après avoir rapidement suivi tes explications!!

Publier un nouveau commentaire.