GNU Info

Info Node: (mysql.info)myisamchk syntax

(mysql.info)myisamchk syntax


Next: myisamchk general options Prev: Table maintenance Up: Table maintenance
Enter node , (file) or (file)node

`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.

myisamchk general options
General Options for `myisamchk'
myisamchk check options
Check Options for `myisamchk'
myisamchk repair options
Repair Options for myisamchk
myisamchk other options
Other Options for `myisamchk'

automatically generated by info2www version 1.2.2.9