Même si le format de table MyISAM est très fiable (toutes les modifications apportées à la table par une instruction SQL sont écrites avant le retour de l'instruction), vous pouvez toujours obtenir une table corrompue si l'un des événements suivants se produit :
· Le processus mysqld est tué dans au milieu d'une écriture.
· Un arrêt inattendu de l'ordinateur se produit (par exemple, l'ordinateur est éteint).
· Panne matérielle.
· Vous pouvez utiliser des programmes externes (tels que myisamchk) sur des tables modifiées simultanément par le serveur.
· Défauts logiciels dans le code MySQL ou MyISAM.
Les symptômes typiques d'une table corrompue sont :
· Lors de la sélection de données dans la table, vous obtenez l'erreur suivante :
· Fichier de clé incorrect pour la table : '...'.
· La requête ne trouve pas la ligne dans la table. Ou. renvoie des données incomplètes.
Vous pouvez utiliser l'instruction CHECK TABLE pour vérifier l'état d'une table MyISAM et utiliser REPAIR TABLE pour réparer une table MyISAM endommagée. Lorsque mysqld n'est pas en cours d'exécution, vous pouvez également utiliser la commande myisamchk pour vérifier ou réparer une table.
Si votre table est fréquemment corrompue, vous devriez essayer de déterminer la raison pour laquelle cela se produit. La chose la plus importante à comprendre est de savoir si la table a été corrompue à la suite d'une panne du serveur. Vous pouvez le vérifier plus tôt en recherchant dans le journal des erreurs le message mysqld redémarré le plus récemment. Si un tel message existe, il est très probable que la corruption de la table soit due à la mort du serveur. Sinon, des dommages pourraient survenir pendant le fonctionnement normal. C'est un défaut. Vous devriez essayer de créer un scénario de test reproductible qui illustre ce problème.