C:\mysql\bin>myisamchk
myisamchk Ver 2.6 for Win95/Win98 at i32
By Monty, for your professional use
This software comes with NO WARRANTY: see the PUBLIC for details.
Description, check and repair of ISAM tables.
Used without options all tables on the command will be checked for errors
Usage: myisamchk [OPTIONS] tables[.MYI]
Global options:
-#, –debug=… Output debug log. Often this is ‘d:t:o,filename’
-?, –help Display this help and exit.
-O, –set-variable var=option
Change the value of a variable. Please note that
this option is deprecated; you can set variables
directly with ‘–variable-name=value’.
-t, –tmpdir=path Path for temporary files
-s, –silent Only print errors. One can use two -s to make
myisamchk very silent
-v, –verbose Print more information. This can be used with
–description and –check. Use many -v for more verbosity!
-V, –version Print version and exit.
-w, –wait Wait if table is locked.
Check options (check is the default action for myisamchk):
-c, –check Check table for errors
-e, –extend-check Check the table VERY throughly. Only use this in
extreme cases as myisamchk should normally be able to
find out if the table is ok even without this switch
-F, –fast Check only tables that haven’t been closed properly
-C, –check-only-changed
Check only tables that have changed since last check
-f, –force Restart with ‘-r’ if there are any errors in the table.
States will be updated as with ‘–update-state’
-i, –information Print statistics information about table that is checked
-m, –medium-check Faster than extend-check, but only finds 99.99% of
all errors. Should be good enough for most cases
-U –update-state Mark tables as crashed if you find any errors
-T, –read-only Don’t mark table as checked
Repair options (When using ‘-r’ or ‘-o’)
-B, –backup Make a backup of the .MYD file as ‘filename-time.BAK’
–correct-checksum Correct checksum information for table.
-D, –data-file-length=# Max length of data file (when recreating data
file when it’s full)
-e, –extend-check Try to recover every possible row from the data file
Normally this will also find a lot of garbage rows;
Don’t use this option if you are not totally desperate.
-f, –force Overwrite old temporary files.
-k, –keys-used=# Tell MyISAM to update only some specific keys. # is a
bit mask of which keys to use. This can be used to
get faster inserts!
-r, –recover Can fix almost anything except unique keys that aren’t
unique.
-n, –sort-recover Forces recovering with sorting even if the temporary
file would be very big.
-p, –parallel-recover
Uses the same technique as ‘-r’ and ‘-n’, but creates
all the keys in parallel, in different threads.
THIS IS ALPHA CODE. USE AT YOUR OWN RISK!
-o, –safe-recover Uses old recovery method; Slower than ‘-r’ but can
handle a couple of cases where ‘-r’ reports that it
can’t fix the data file.
–character-sets-dir=…
Directory where character sets are
–set-character-set=name
Change the character set used by the index
-q, –quick Faster repair by not modifying the data file.
One can give a second ‘-q’ to force myisamchk to
modify the original datafile in case of duplicate keys
-u, –unpack Unpack file packed with myisampack.
Other actions:
-a, –analyze Analyze distribution of keys. Will make some joins in
MySQL faster. You can check the calculated distribution
by using ‘–description –verbose table_name’.
-d, –description Prints some information about table.
-A, –set-auto-increment[=value]
Force auto_increment to start at this or higher value
If no value is given, then sets the next auto_increment
value to the highest used value for the auto key + 1.
-S, –sort-index Sort index blocks. This speeds up ‘read-next’ in
applications
-R, –sort-records=#
Sort records according to an index. This makes your
data much more localized and may speed up things
C:\mysql\bin>myisamchk c:\mysql\data\hw_enterprice\function_products.frm
myisamchk: error: ‘c:\mysql\data\hw_enterprice\function_products.frm’ is not a M
yISAM-table
C:\mysql\bin>myisamchk c:\mysql\data\hw_enterprice\function_products.myi
Checking MyISAM file: c:\mysql\data\hw_enterprice\function_products.myi
Data records: 85207 Deleted blocks: 39
myisamchk: warning: Table is marked as crashed
myisamchk: warning: 1 clients is using or hasn’t closed the table properly
- check file-size
- check key delete-chain
- check record delete-chain
myisamchk: error: record delete-link-chain corrupted
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
- check record links
myisamchk: error: Wrong bytesec: 0-195-171 at linkstart: 841908
MyISAM-table ‘c:\mysql\data\hw_enterprice\function_products.myi’ is corrupted
Fix it using switch “-r” or “-o”
继续进行操作:
C:\mysql\bin>myisamchk –recover –quick c:\mysql\data\hw_enterprice\function_p
roducts.myi
- check key delete-chain
- check record delete-chain
myisamchk: error: record delete-link-chain corrupted
myisamchk: error: Quick-recover aborted; Run recovery without switch ‘q’
Updating MyISAM file: c:\mysql\data\hw_enterprice\function_products.myi
MyISAM-table ‘c:\mysql\data\hw_enterprice\function_products.myi’ is not fixed be
cause of errors
Try fixing it by using the –safe-recover (-o) or the –force (-f) option
系统提示我使用–safe-recover (-o) or the –force (-f) option进行修复操作,于是
C:\mysql\bin>myisamchk –safe-recover c:\mysql\data\hw_enterprice\function_prod
ucts.myi
- recovering (with keycache) MyISAM-table ‘c:\mysql\data\hw_enterprice\function_
products.myi’
Data records: 85207
Wrong bytesec: 0-195-171 at 841908; Skipped
Data records: 85215