Même si le format des tables MyISAM est relativement sûr (tous les changements sont écrits avant que la requête SQL ne retourne quoi que ce soit), vous pouvez quand même vous trouver face à des tables corrompues si l'une des choses suivantes arrive :
Le processus mysqld
est tué au milieu
d'une écriture.
Arrêt inattendu de la machine (par exemple, coupure de courant).
Un problème matériel.
Vous utilisez un programme externe (comme myisamchk) sur une table active.
Un bogue logiciel dans le code de MySQL ou de MyISAM.
Les symptômes typiques d'une table corrompue sont :
Vous obtenez l'erreur
Incorrect key file for table: '...'. Try to repair it
pendant la sélection de données à partir de cette table.
Les requêtes ne trouvent pas de lignes dans la table ou retournent des données incomplètes.
Vous pouvez réparer une table corrompue avec REPAIR
TABLE
. Vous pouvez aussi réparer une table, lorsque
mysqld
ne fonctionne pas, avec la commande
myisamchk
. Lorsque
mysqld
est arrêté, vous pouvez vérifier
une table avec la commande myisamchk
. Voyez
la section Section 13.5.2.3, « Syntaxe de CHECK TABLE
»,
Section 13.5.2.6, « Syntaxe de REPAIR TABLE
» et
Section 5.7.3.1, « Syntaxe de l'utilitaire myisamchk
».
Si vos tables sont souvent corrompues, vous devez essayez de
trouver d'où vient le problème ! Dans ce cas, la chose la
plus importante à savoir est, si la table est corrompue, si
le serveur mysqld
s'est interrompu. (cela
peut être facilement vérifié en regardant s'il y a une
entrée récente restarted mysqld
dans le
fichier d'erreurs de mysqld). Si ce n'est pas le cas, vous
devez essayer d'effectuer une série de tests. Voyez
Section A.4.2, « Que faire si MySQL plante constamment ? » et
Section D.1.6, « Faire une batterie de tests lorsque vous faites face à un problème de
table corrompue ».
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.