myisamchk
s'exécute avec une commande de
la forme :
shell> myisamchk [options] tbl_name
Les options
spécifient ce que vous voulez
que myisamchk
fasse. Elles sont décrites
dans ce chapitre. Vous pouvez aussi obtenir une liste
d'options en invoquant le programme avec myisamchk
--help
. Sans option, myisamchk
va
simplement vérifier les tables. Pour obtenir plus
d'information ou pour demander à myisamchk
de prendre des mesures correctives, il faut ajouter l'une des
options listées ici.
tbl_name
est la table que vous voulez
réparer ou vérifier. Si vous exécutez
myisamchk
autre part que dans le dossier de
données, vous devez spécifier le chemin jusqu'au fichier,
car sinon, myisamchk
n'aura aucune idée
d'où chercher les données dans votre base. En fait,
myisamchk
ne se préoccupe pas du fait que
le fichier que vous utilisez est dans le dossier de base ou
pas : vous pouvez copier le fichier à réparer dans un autre
dossier, et y faire les opérations d'entretien.
Vous pouvez spécifier plusieurs noms de tables à
myisamchk
si vous le voulez. Vous pouvez
aussi spécifier un nom sous la forme d'un fichier d'index
(avec l'option .MYI
), qui vous permettra
de spécifier toutes les tables dans un dossier en utilisant
le schéma *.MYI
. Par exemple, si vous
êtes dans le dossier de données, vous pouvez spécifier
toutes les tables dans le dossier comme ceci :
shell> myisamchk *.MYI
Si vous n'êtes pas dans le dossier de données, et que vous souhaitez vérifier toutes les tables, vous devez ajouter le chemin jusqu'au dossier :
shell> myisamchk /path/to/database_dir/*.MYI
Vous pouvez même vérifier toutes les tables de toutes les bases avec le chemin suivant :
shell> myisamchk /path/to/datadir/*/*.MYI
La méthode recommandée pour vérifier rapidement toutes les tables est :
myisamchk --silent --fast /path/to/datadir/*/*.MYI isamchk --silent /path/to/datadir/*/*.ISM
Si vous voulez vérifier toutes les tables et réparer celles qui sont corrompues, vous pouvez utiliser la ligne suivante :
myisamchk --silent --force --fast --update-state -O key_buffer=64M \ -O sort_buffer=64M -O read_buffer=1M -O write_buffer=1M \ /path/to/datadir/*/*.MYI isamchk --silent --force -O key_buffer=64M -O sort_buffer=64M \ -O read_buffer=1M -O write_buffer=1M /path/to/datadir/*/*.ISM
Ces commandes ci-dessus supposent que vous avez plus de 64 Mo
de libres. Pour plus d'informations sur l'allocation de
mémoire avec myisamchk
, voyez la section
Section 5.7.3.6, « Utilisation de la mémoire par myisamchk
».
Notez que si vous obtenez une erreur comme celle-ci :
myisamchk: warning: 1 clients is using or hasn't closed the table properly
Cela signifie que vous essayez de vérifier une table qui a
été modifiée par un autre programme (comme le serveur
mysqld
) qui n'a pas encore refermé le
fichier de table, ou que le fichier n'a pas été correctement
refermé.
Si mysqld
fonctionne, vous devez forcer la
fermeture correcte des fichiers de tables avec la commande
FLUSH TABLES
, et vous assurer que personne
n'utilise les tables durant vos opérations avec
myisamchk
. En MySQL version 3.23, la
meilleure méthode pour éviter ce problème est d'utiliser la
commande CHECK TABLE
au lieu de
myisamchk
pour vérifier les tables.
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.