12
votes

MySQL Vérifier la table écrasée

Je remarque que lorsque PHPMYADMIN ouvre une DB, cela montre immédiatement si une table s'est écrasée ou non. Il me semble donc que phpmyadmin n'est pas en cours d'exécution d'un Table de contrôle ou Analyse Tableau .

Quelqu'un peut-il savoir ce qu'il fait pour obtenir cet informait si rapidement et efficacement?


0 commentaires

5 Réponses :


13
votes

Je parie que

SHOW TABLE STATUS FROM `db` 


3 commentaires

Il peut y avoir des situations où cela est utile, mais pas dans le mien. Afficher le statut de la table ne donne aucune différence de statut des tables que j'ai corrompues.


@ MC0e, non seulement cela ne montre pas que cela n'a pas écrasé tout le temps - une table n'est pas marqué comme écrasé jusqu'à ce qu'il soit utilisé . Donc, obtenir le statut sur une table qui n'a pas été lu / écrit ne donnera rien. Si vous subissez un événement qui provoque des tables bloquées, la meilleure chose à faire est de faire une réparation sur chacune d'elles au lieu d'attendre qu'ils vous disent qu'ils sont écrasés. Donc, cette réponse acceptée est incorrecte


L'OP a demandé comment PHPMYADMIN a obtenu le statut de table si rapidement. Cette réponse est donc très probablement correcte (bien que non fondée, et exprimée comme une supposition). La réponse pourrait cependant être considérablement améliorée avec des informations du commentaire de @Dev_Null.



3
votes

Si vous avez un accès au shell, l'utilitaire mysqlanalyze code> pourrait aider.

mysqlanalyze dbname


0 commentaires

9
votes
show table status where comment like '%crash%';

1 commentaires

J'aime ça mieux que la réponse acceptée, car ce n'est pas apparent dans la réponse acceptée que vous pouvez facilement utiliser comme dans le contexte d'une déclaration de spectacle. (Aussi, je préfère le commentaire! = "".)



5
votes

La manière la plus efficace que j'ai trouvée est d'utiliser la ligne de commande mysqlcheck outil:

mysqlcheck -u mydbuser -p mydbname

Ceci accédera à myDBName à l'aide de l'utilisateur myDBuser et invite le mot de passe de ce utilisateur. Il vérifiera ensuite chaque table dans la base de données spécifiée.

voir https://dev.mysql.com/doc/refman /5.7/fr/mysqlcheck.html

Remarque: Ce n'est pas la manière dont PHPMYADMIN le fait, ce n'est donc pas strictement une réponse à la question initiale, mais je le mettez ici, car Google envoie des recherches sur MySQL Show Des tables bloquées ici.


0 commentaires

1
votes

La bonne façon de vérifier une table est xxx pré>

afin de vérifier la barre de table dans la base de données FOO P>

mysqlcheck FOO BAR


0 commentaires