不能打开文件:{表}mytable.myi
在大多数情况下,数据库的破坏是指索引文件的破坏,而实际数据被破坏的事实非常小,大多数形式的数据库破坏的修复非常简单。与以前的检查一样,有三种方法来修复它。
下面的方法只适用于在MyISAM格式的表。其他类型的损伤需要从备份恢复。
1、修复表SQL语句(mysql服务必须处于运行状态)。
2、命令mysqlcheck(MySQL服务可以在运行状态)。
3、命令myisamchk(MySQL服务必须停止,或表的操作是无效的)。
当表被修复时,最好先进行备份。因此,您需要一个硬盘空间,是原来表的两倍大小。请确保硬盘空间在修复之前没有用完。
1修理表修复
语法:修复表表名称{选项}
选项如下:
在数据表还没有被修改的情况下,快速是最快的。
扩展尝试恢复每个数据行,并生成一些可以在危急情况下使用的垃圾数据行。
use_frm时使用的the.myi文件丢失或损坏的头。定义与重建索引。FRM
在大多数情况下,很容易修复修复分区表没有选择的问题。但当the.myi文件丢失或损坏的头,它不工作,例如:
MySQL >修表表;
++—
表格运算msg_type | | | | msg_text |
++—
sports_results.mytable修复错误| | | |找不到文件:眼前。我(错误:2)|
+————————+——+——导致修复失败时,索引文件丢失或头部被破坏,为了使用定义文件来修复,需要使用use_frm选项。例如:
MySQL >修表表use_frm;
+ + + +
表格运算msg_type | | | | msg_text |
+ + + +
| sports_results.mytable repair warning Number of | | | rows changed from 0 to 2 |
sports_results.mytable修复状态| | | |好|
+ + + +
我们能看到的msg_test表项的输出信息的好,和表名已成功修复损坏的表。
2是建立与MySQL的内置命令恢复mysqlcheck
当MySQL服务正在运行,它也可以与MySQL的内置命令修复,mysqlcheck。
语法:mysqlcheck -R数据库名称的表的名字uuser - ppass
% mysqlcheck R sports_results mytable - uuser - ppass
sports_results.mytable好可以使用mysqlcheck修复多个表在同一时间。只要名字的表列的数据库的名称后(用空格分隔),或没有数据库的名称,它将修复数据库中的所有表,例如:
% mysqlcheck R sports_results mytable事件uuser - ppass
sports_results.mytable好
sports_results.events好
% mysqlcheck R sports_results - uuser - ppass
sports_results.mytable好
sports_results.events ok3 >修用myisamchk
这样,MySQL服务必须停止,或表的操作是无效的(选择跳过外锁不使用),有必要记住的related.myi文件的路径必须定义或定义本身。
语法:myisamchk { } { }选择表名
以下是他们的选择和描述
-备份,B在修复完成之前由相关表组成。
-正确的校验和校验和
表- D -数据文件长度= #,#重建,指定的数据文件的最大长度
-扩展检查,E试图恢复每一条数据线并产生一些不能以任何方式使用的垃圾数据线。
力,F覆盖满足的same.tmd文件相同的文件名时。
用= #键,K #指定的加速键的处理速度,每一个二进制位表示一个键。第一个关键的0
-恢复,最常用的选项- R,大部分损坏可以修复它。如果你的内存足够大,你可以增加该参数的值sort_buffer_size加快复苏。但它不工作时的独特的关键是独特的因为它坏了。
修复安全recovero -最彻底的,但慢用比R,一般在R后修复失败。此方法读取所有的行和重构基于行为的基础指标。硬盘空间需求比R方式较小,因为它不创建一个分类缓存你可以增加key_buffer_size价值加速修复。
-排序恢复,N MySQL被它的类索引,尽管结果是临时文件将会非常大。
-字符集…=包含字符集的目录
set字符集= name为索引定义了一个新字符集
- tmpdir =路径,T,如果你不想使用环境变数的值,您可以自定义的临时文件的位置。
-快速,q的最快修复方式,当数据文件未被修改时,当有多个键时,第二个Q将修改数据文件。
-打开,U unpackages的MyISAMPack打包文件
对myisamchk应用实例
% myisamchk -r mytable
回收(与keycache)MyISAM表的我的眼前。
数据记录:0