`myisamchk' Invocation Syntax
.............................
`myisamchk' is invoked like this:
shell> myisamchk [options] tbl_name
The `options' specify what you want `myisamchk' to do. They are
described below. (You can also get a list of options by invoking
`myisamchk --help'.) With no options, `myisamchk' simply checks your
table. To get more information or to tell `myisamchk' to take
corrective action, specify options as described below and in the
following sections.
`tbl_name' is the database table you want to check/repair. If you run
`myisamchk' somewhere other than in the database directory, you must
specify the path to the file, because `myisamchk' has no idea where your
database is located. Actually, `myisamchk' doesn't care whether or not
the files you are working on are located in a database directory; you
can copy the files that correspond to a database table into another
location and perform recovery operations on them there.
You can name several tables on the `myisamchk' command line if you
wish. You can also specify a name as an index file name (with the
`.MYI' suffix), which allows you to specify all tables in a directory
by using the pattern `*.MYI'. For example, if you are in a database
directory, you can check all the tables in the directory like this:
shell> myisamchk *.MYI
If you are not in the database directory, you can check all the tables
there by specifying the path to the directory:
shell> myisamchk /path/to/database_dir/*.MYI
You can even check all tables in all databases by specifying a wild card
with the path to the MySQL data directory:
shell> myisamchk /path/to/datadir/*/*.MYI
The recommended way to quickly check all tables is:
myisamchk --silent --fast /path/to/datadir/*/*.MYI
isamchk --silent /path/to/datadir/*/*.ISM
If you want to check all tables and repair all tables that are
corrupted, you can use the following line:
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
The above assumes that you have more than 64 M free.
Note that if you get an error like:
myisamchk: warning: 1 clients is using or hasn't closed the table properly
This means that you are trying to check a table that has been updated by
the another program (like the `mysqld' server) that hasn't yet closed
the file or that has died without closing the file properly.
If you `mysqld' is running, you must force a sync/close of all tables
with `FLUSH TABLES' and ensure that no one is using the tables while
you are running `myisamchk'. In MySQL Version 3.23 the easiest way to
avoid this problem is to use `CHECK TABLE' instead of `myisamchk' to
check tables.