myisamchk 支持以下用于表修复操作的选项(当给出 --recover
或 --safe-recover
等选项时执行的操作):
--backup
,-B
命令行格式 --backup
将
.MYD
文件备份为file_name
-time
.BAK-
命令行格式 --character-sets-dir=路径
类型 字符串 默认值 [无]
安装字符集的目录。请参阅 第 12.15 节,“字符集配置”。
-
命令行格式 --correct-checksum
更正表的校验和信息。
--data-file-length=
,len
-D
len
命令行格式 --data-file-length=长度
类型 数字 数据文件的最大长度(在数据文件“满”时重新创建数据文件时)。
--extend-check
,-e
命令行格式 --extend-check
执行尝试从数据文件中恢复每个可能行的修复。通常,这也会发现很多垃圾行。除非万不得已,否则不要使用此选项。
另请参阅表检查选项下对此选项的描述。
有关输出格式的描述,请参阅 第 6.6.4.5 节,“使用 myisamchk 获取表信息”。
--force
,-f
命令行格式 --force
覆盖旧的中间文件(名称类似于
的文件),而不是中止。tbl_name
.TMD--keys-used=
,val
-k
val
命令行格式 --keys-used=值
类型 数字 对于 myisamchk,选项值是一个位值,指示要更新哪些索引。选项值的每个二进制位对应一个表索引,其中第一个索引是位 0。选项值 0 禁用对所有索引的更新,这可用于更快地插入。可以使用 myisamchk -r 重新激活停用的索引。
-
命令行格式 --max-record-length=长度
类型 数字 如果 myisamchk 无法分配内存来保存大于给定长度的行,则跳过这些行。
--quick
,-q
命令行格式 --quick
仅修改索引文件而不修改数据文件,从而更快地完成修复。您可以指定两次此选项,以强制 myisamchk 在出现重复键的情况下修改原始数据文件。
--recover
,-r
命令行格式 --recover
执行修复,可以解决几乎所有问题,但非唯一的唯一键除外(这对于
MyISAM
表来说是极不可能出现的错误)。如果要恢复表,则应首先尝试使用此选项。仅当 myisamchk 报告无法使用--recover
恢复表时,才应该尝试使用--safe-recover
。(在--recover
失败的不太可能的情况下,数据文件将保持不变。)如果您有很多内存,则应该增加
myisam_sort_buffer_size
的值。--safe-recover
,-o
命令行格式 --safe-recover
使用旧的恢复方法执行修复,该方法按顺序读取所有行,并根据找到的行更新所有索引树。这比
--recover
慢一个数量级,但可以处理--recover
无法处理的几种极不可能出现的情况。这种恢复方法使用的磁盘空间也比--recover
少得多。通常,您应该首先使用--recover
进行修复,如果--recover
失败,则仅使用--safe-recover
进行修复。如果您有很多内存,则应该增加
key_buffer_size
的值。-
命令行格式 --set-collation=名称
类型 字符串 指定用于对表索引进行排序的排序规则。字符集名称由排序规则名称的第一部分隐含。
--sort-recover
,-n
命令行格式 --sort-recover
强制 myisamchk 使用排序来解析键,即使临时文件会非常大。
--tmpdir=
,dir_name
-t
dir_name
命令行格式 --tmpdir=dir_name
类型 目录名 用于存储临时文件的目录的路径。如果未设置,myisamchk 将使用
TMPDIR
环境变量的值。--tmpdir
可以设置为一个目录路径列表,这些路径以循环方式依次用于创建临时文件。目录名之间的分隔符在 Unix 上是冒号 (:
),在 Windows 上是分号 (;
)。--unpack
,-u
命令行格式 --unpack
解压缩使用 myisampack 打包的表。