To check a MyISAM
table, use the following
commands:
myisamchk
tbl_name
This finds 99.99% of all errors. What it cannot find is corruption that involves only the data file (which is very unusual). If you want to check a table, you should normally run myisamchk without options or with the
-s
(silent) option.myisamchk -m
tbl_name
This finds 99.999% of all errors. It first checks all index entries for errors and then reads through all rows. It calculates a checksum for all key values in the rows and verifies that the checksum matches the checksum for the keys in the index tree.
myisamchk -e
tbl_name
This does a complete and thorough check of all data (
-e
means “extended check”). It does a check-read of every key for each row to verify that they indeed point to the correct row. This may take a long time for a large table that has many indexes. Normally, myisamchk stops after the first error it finds. If you want to obtain more information, you can add the-v
(verbose) option. This causes myisamchk to keep going, up through a maximum of 20 errors.myisamchk -e -i
tbl_name
This is like the previous command, but the
-i
option tells myisamchk to print additional statistical information.
In most cases, a simple myisamchk command with no arguments other than the table name is sufficient to check a table.