web-dev-qa-db-fra.com

MySQL a déclaré: # 1194 - La table 'nom_table' est marquée comme bloquée et doit être réparée

Si les tables plantent, cela signifie que quelque chose ne va pas avec mon système.

MySQL said: 

#1194 - Table 'tablename' is marked as crashed and should be repaired 

Mon site est actuellement en panne à cause de cela.

Je sais comment réparer une table à partir de phpmyadmin, mais est-ce un moyen sûr de réparer?

Quel est le facteur important pour cette question?

Question. Généralement, pourquoi la table se plante-t-elle?

Réponses. Celles-ci peuvent être les raisons - 

  1. L'espace disque du serveur était saturé. (Veuillez vérifier l'espace disque sur le serveur live)

  2. Arrêt incorrect du serveur MySQL/Fermeture incorrecte des tables lors de l'utilisation des bases de données.

  3. Plus de charge sur le serveur.

13
Javascript Coder

Tout d'abord, les raisons pour lesquelles une table s'est écrasée sont multiples.

  • échec du disque dur
  • redémarrage soudain du serveur
  • crash du serveur
  • problèmes de micrologiciel (contrôleur RAID ou BIOS)
  • défauts de câblage
  • etc.

Une réparation avec phpmyadmin est fondamentalement la même que la ligne de commande mysqlrepair. Je suggère de tout réparer en ligne de commande:

mysqlrepair -A --auto-repair
mysqlrepair -A -o

Ou commencez un test:

mysqlrepair -A -c
20
Andreas Rehm

Si vous ne disposez pas des outils de ligne de commande nécessaires et que la raison du crash est probablement MYSQL elle-même, exécutez cette opération à partir de MYSQL pour réparer une table:

REPAIR TABLE db_name.table_name;
12

Oui, vous pouvez réparer une table à partir de phpmyadmin, cela n'affectera pas vos données et vous pouvez également réparer une table à partir de Shell avec la commande 'myisamchk'.

4
Bobbin Zachariah

Solution :

Allez simplement à la base de données et select table qui a un problème et select "réparation de table" option 

 enter image description here

1
Hassan Saeed

Utilisation:

mysqlcheck -u root -p --auto-repair --check --all-databases
(Password prompted)

Entrez le mot de passe MySQL pour l'utilisateur root et tout est fait.

1
Abhishek Sharma

J'utilise ceci depuis la ligne de commande:

mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
1
bgarlock

Si vous avez un accès ssh au serveur, vous pouvez vous connecter puis exécuter:

df -h

et vous pouvez voir quelque chose comme ceci:

Filesystem            Size  Used Avail Use% Mounted on
/dev/cciss/xxxx      19G  825M   18G   5% /
/dev/cciss/xxxx     9.4G  4.8G  4.2G  54% /usr
/dev/cciss/xxxx      15G  1.8G   12G  13% /var
/dev/cciss/xxxx      19G   18G    0G   0% /opt
/dev/cciss/xxxx     4.7G  243M  4.3G   6% /tmp
/dev/cciss/xxxx     9.4G  1.5G  7.5G  17% /home

C'est LAMP installé sur /opt, après avoir un peu d'espace disque disponible, vous pouvez exécuter la requête (comme écrit ci-dessus):

Repair table db.mytablecrashed

Et vous entrez dans la dernière rangée:

Table               OP        Msg_type  Msg_text
...
db.mytablecrashed   repair    status    OK
0
Rodney Salcedo