J'étais en train de réparer cette table, le serveur a été soudainement pendu et quand je suis revenu, toutes les tables sont correctes, mais celle-ci indiquant «en cours d'utilisation» et lorsque j'essaie de réparer le problème persiste.
ERREUR 144 - La table './extas_d47727/xzclf_ads' est marquée comme bloquée et la dernière réparation (automatique?) A échoué
Que puis-je faire pour le réparer?
Si votre processus MySQL est en cours d'exécution, arrêtez-le. Sur Debian:
Sudo service mysql stop
Allez dans votre dossier de données. Sur Debian:
cd /var/lib/mysql/$DATABASE_NAME
Essayez de courir:
myisamchk -r $TABLE_NAME
Si cela ne fonctionne pas, vous pouvez essayer:
myisamchk -r -v -f $TABLE_NAME
Vous pouvez redémarrer votre serveur MySQL. Sur Debian:
Sudo service mysql start
Essayez d'exécuter la requête suivante:
repair table <table_name>;
J'ai eu le même problème et cela m'a résolu le problème.
Si cela vous empêche de refuser l'accès à/var/lib/mysql, utilisez la solution suivante
$ cd /var/lib/
$ Sudo -u mysql myisamchk -r -v -f mysql/<DB_NAME>/<TABLE_NAME>
J'ai eu myisamchk: error: myisam_sort_buffer_size is too small
comme erreur.
La solution
myisamchk -r -v mysql/<DB_NAME>/<TABLE_NAME> --sort_buffer_size=2G
J'avais besoin d'ajouter USE_FRM à l'instruction de réparation pour que cela fonctionne.
REPAIR TABLE <table_name> USE_FRM;
Allez à data_dir
et supprimez le fichier Your_table.TMP
après avoir réparé la table <Your_table>
.
C'est une solution à 100%. J'ai essayé moi-même.
myisamchk -r -v -f --sort_buffer_size = 128M --key_buffer_size = 128M/var/lib/mysql/nom de la base de données/tabloname
J'ai essayé les options des réponses existantes, principalement celle marquée correcte, qui ne fonctionnait pas dans mon scénario. Cependant, ce qui fonctionnait utilisait phpMyAdmin. Sélectionnez la base de données puis sélectionnez la table. Dans le menu déroulant inférieur, sélectionnez "Réparer la table".