
Voici une erreur que vous pouvez obtenir avec mysql :
|
mysqldump: Got error: 144: Table 'visiteur' is marked as crashed and last (automatic?) repair failed when doing LOCK TABLES |
Ce message d'erreur ressemble à corruption d'index de MyISAM .
Il est necessaire de réparer la table pour reconstruire l'index.
Pour nous aider dans cette aventure périlleuse, nous allons nous appuyer sur l'outil, myisamchk.
Il s'agit d'un petit utilitaire mysql bien pratique pour obtenir des informations sur vos tables, pour les vérifier, ou encore les optimiser.
Mais aussi
vous sauver la vie réparer des tables endommagées.
Petit coup d'oeil à la syntaxe, pour réparer votre table nous allons utiliser l'option --recover :
|
myisamchk -–recover /var/lib/mysql/DATABASENAME/TABLE_NAME.myi |
Avant de vous lancer, vous pouvez exécuter, au préalable, la commande suivante, pour vérifier votre table :
|
myisamchk visiteur.MYI<img class="aligncenter size-full wp-image-953" src="https://www.nicolas-housset.fr/wp-content/uploads/2016/05/MyISAM-table-is-usable-but-should-be-fixed.jpg" alt="MyISAM-table-is-usable-but-should-be-fixed" width="559" height="184" /> |
Et maintenant, tentons de corriger le problème.
D'abord, avant de faire quoi que ce soit, vous devez faire une sauvegarde physique de tous vos fichiers de base de données.
Même si la réparation de myisamchk est assez sécurisée,on n'est jamais trop prudent.
|
myisamchk --recover visiteur.MYI |
Si cela ne marche pas ou ne récupère pas complètement votre table, comme dans la copie d'écran suivante :

Vous pouvez ré-exécuter la commande en remplaçant -recover par -safe-recover qui est plus lent, mais plus approfondie :
|
myisamchk --safe-recover --force visiteur.MYI |

Puis, vous pouvez relancer une vérification :
|
myisamchk: warning: 1 clients is using or hasn't closed the table properly |

Pas de panique : vous essayez de vérifier une table qui a été modifiée par un autre programme qui n'a pas encore refermé le fichier de table, ou que le fichier n'a pas été correctement refermé.