CHECK TABLE tbl_name[,tbl_name...] [option [option...]] option = QUICK | FAST | MEDIUM | EXTENDED | CHANGED
CHECK TABLE
ne fonctionne qu'avec les
tables MyISAM
et InnoDB
.
Avec les tables MyISAM
, c'est l'équivalent
de la commande myisamchk -m table_name
sur
la table.
Par défaut, l'option MEDIUM
est utilisée.
Cette commande vérifie l'intégrité des tables. Pour les
tables MyISAM
, des statistiques importantes
sont mises à jour. La commande retourne les informations
suivantes sur la table dans les colonnes suivantes :
Colonne | Valeur |
Table | Nom de la table. |
Op | Toujours ``check''. |
Msg_type | Un des statut status , error ,
info ou warning . |
Msg_text | Le message. |
Notez que vous pouvez obtenir de nombreuses lignes
d'informations pour chaque table. La dernière ligne sera du
type Msg_type status
et doit être
normalement OK
. Si vous n'obtenez pas de
statut OK
ou Not
checked
, il vous faudra exécuter une réparation de
la table. See Section 5.7.3, « Utilisation de myisamchk
pour la maintenance des
tables et leur recouvrement ».
Not checked
signifie que la table a
indiqué qu'il n'y a pas de vérification à faire.
Les différents types de vérifications sont les suivants :
Type | Signification |
QUICK |
N'analyse pas les lignes pour vérifier les liens erronés. |
FAST |
Ne vérifie que les tables qui n'ont pas été correctement fermées. |
CHANGED |
Ne vérifie que les tables qui ont changées depuis la dernière vérification, ou bien qui n'ont pas été correctement fermées. |
MEDIUM |
Analyse les lignes pour s'assurer que les liens effacés sont corrects. Cette option calcule aussi la somme de contrôle des lignes, et la vérifie avec la somme de contrôle des clés. |
EXTENDED |
Fait une vérification complète des liens pour chaque ligne. Cela vérifie que la table est totalement cohérente, mais cela peut prendre beaucoup de temps. |
Pour les tables à format de dynamique de type
MyISAM
, une vérification de table sera
toujours démarrée avec une option de niveau
MEDIUM
. Pour les tables à format de ligne
statique, nous évitons les niveaux de
QUICK
et FAST
car les
lignes sont rarement corrompues.
Vous pouvez combiner les options de vérification comme ceci :
CHECK TABLE test_table FAST QUICK;
L'exemple ci-dessus va simplement faire une vérification de la table, pour s'assurer qu'elle a été correctement fermée.
Note : dans certains cas,
CHECK TABLE
va modifier la table! Cela
arrive si la table a été marquée comme
"corrupted
" et "not closed
properly
" mais CHECK TABLE
n'a
trouvé aucun problème dans la table. Dans ce cas,
CHECK TABLE
va marquer la table comme
correcte.
Si une table est corrompue, il est probable que les problèmes sont dans les fichiers d'index et non pas dans les données. Tous les types de vérifications présentés ci-dessus vérifient les index soigneusement, et ils devraient trouver la plupart des erreurs.
Si vous voulez simplement vérifier une table que vous
supposez correcte, vous pouvez n'utiliser aucune option, ou
l'option QUICK
. Cette dernière peut aussi
être utilisée si vous êtes pressé, et que vous pouvez
prendre le risque minime que QUICK
ne
trouve pas d'erreur dans votre fichier. Dans la plupart des
cas, MySQL doit trouver toutes les erreurs de données, pour
un usage normal. Si cela arrive, alors la table est marquée
comme 'corrupted', auquel cas, la table ne pourra pas être
utilisée tant qu'elle n'a pas été réparée).
FAST
et CHANGED
sont
surtout destinées à être utilisées depuis un script : par
exemple, il peut être exécuté depuis une tâche
cron
, si vous voulez vérifier la table de
temps en temps. Dans la plupart des cas, l'option
FAST
doit être préférée à
CHANGED
: le seul cas ou vous pourriez
préférez CHANGED
est lorsque vous
soup¸onnez avoir trouvé un bogue dans les tables
MyISAM
.
EXTENDED
ne doit être utilisé qu'après
une vérification normale, et que vous obtenez toujours des
erreurs étranges lorsque MySQL essaie de modifier une ligne
ou trouve une ligne avec clé (ce qui est très rare, si une
vérification a réussie).
Certains problèmes rapportés par la commande CHECK
TABLE
, ne peuvent être corrigés automatiquement :
Found row where the auto_increment column has the
value 0
.
Cela signifie que vous avez dans votre table une ligne qui
contient la valeur 0 alors qu'elle est de type
AUTO_INCREMENT
. (Il est possible de
créer une ligne où la colonne
AUTO_INCREMENT
vaut 0 en spécifiant
explicitement la valeur 0 dans la colonne avec la commande
UPDATE
.
Ce n'est pas une erreur en soit, mais cela peut poser des
problèmes si vous décidez de sauver cette table dans un
fichier texte, et de la restaurer, ou encore d'appliquer
la commande ALTER TABLE
sur la table.
Dans ce cas, la colonne AUTO_INCREMENT
va changer automatiquement de valeur, en suivant les
règles des colonnes de type
AUTO_INCREMENT
, qui vont causer un
problème de clé doublon.
Pour se débarasser de cette alerte, vous devez utiliser
une commande UPDATE
sur la table, pour
mettre une valeur différente de 0 dans cette colonne.
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.