(mysql.info.gz) myisamchk syntax
Info Catalog
(mysql.info.gz) Table maintenance
(mysql.info.gz) Table maintenance
(mysql.info.gz) myisamchk general options
5.7.3.1 `myisamchk' Invocation Syntax
.....................................
Invoke `myisamchk' like this:
shell> myisamchk [OPTIONS] TBL_NAME
The OPTIONS specify what you want `myisamchk' to do. They are
described in the following sections. You can also get a list of
options by invoking `myisamchk --help'.
With no options, `myisamchk' simply checks your table as the default
operation. To get more information or to tell `myisamchk' to take
corrective action, specify options as described in the following
discussion.
TBL_NAME is the database table you want to check or repair. If you run
`myisamchk' somewhere other than in the database directory, you must
specify the path to the database directory, because `myisamchk' has no
idea where the database is located. In fact, `myisamchk' doesn't
actually care whether the files you are working on are located in a
database directory. You can copy the files that correspond to a
database table into some other 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 table by naming its index file (the file
with the `.MYI' suffix). This 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 `MyISAM' tables in that
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 wildcard
with the path to the MySQL data directory:
shell> myisamchk /path/to/datadir/*/*.MYI
The recommended way to quickly check all `MyISAM' and `ISAM' tables is:
shell> myisamchk --silent --fast /path/to/datadir/*/*.MYI
shell> isamchk --silent /path/to/datadir/*/*.ISM
If you want to check all `MyISAM' and `ISAM' tables and repair any that
are corrupted, you can use the following commands:
shell> 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
shell> isamchk --silent --force -O key_buffer=64M \
-O sort_buffer=64M -O read_buffer=1M -O write_buffer=1M \
/path/to/datadir/*/*.ISM
These commands assume that you have more than 64MB free. For more
information about memory allocation with `myisamchk', see
myisamchk memory.
You must ensure that no other program is using the tables while you are
running `myisamchk'. Otherwise, when you run `myisamchk', it may
display the following error message:
warning: clients are using or haven't closed the table properly
This means that you are trying to check a table that has been updated by
another program (such as the `mysqld' server) that hasn't yet closed
the file or that has died without closing the file properly.
If `mysqld' is running, you must force it to flush any table
modifications that are still buffered in memory by using `FLUSH
TABLES'. You should then ensure that no one is using the tables while
you are running `myisamchk'. The easiest way to avoid this problem is
to use `CHECK TABLE' instead of `myisamchk' to check tables.
Info Catalog
(mysql.info.gz) Table maintenance
(mysql.info.gz) Table maintenance
(mysql.info.gz) myisamchk general options
automatically generated byinfo2html