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.
