|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL。然而,如果你的项目不是在GPL协议下的话,你必须为使用MySQL来支付许可费用,或者你可能因为这个因素而将你的项目改为遵循GPL。</p>大概良多人碰到过相似Can’topenfile:‘[Table]mytable.MYI’如许的毛病信息,却不晓得怎样办理他,上面我们做个先容,
多半情形下,数据库被损坏只是指索引文件遭到了损坏,真实的数据被损坏失落的情形十分少。年夜多半情势的数据库损坏的的修复相称复杂。
和后面的校验一样,修复的体例也有三种。
上面讲的办法只对MyISAM格局的表无效。其他范例的破坏必要从备份中恢复。
1,REPAIRTABLESQLstatement(mysql服务必需处于运转形态)。
2,命令mysqlcheck(mysql服务能够处于运转形态)。
3,命令myisamchk(必需停失落mysql服务,大概所操纵的表处于不举动形态)。
在修复表的时分,最好先作一下备份。以是你必要两倍于原始表巨细的硬盘空间。请确保在举行修复前你的硬盘空间还没有效完。
1>用”repairtable”体例修复
语法:repairtable表名[选项]
选项以下:
QUICK用在数据表还没被修正的情形下,速率最快
EXTENDED试图往恢复每一个数据行,会发生一些渣滓数据行,万般无法的情形下用
USE_FRM用在.MYI文件丧失大概头部遭到损坏的情形下。使用.frm的界说来重修索引
多半情形下,复杂得用”repairtabletablename”不加选项就能够弄定成绩。可是当.MYI文件丧失大概头部遭到损坏时,如许的体例不论用,比方:
mysql>REPAIRTABLEmytable;
+————————-+——–+———-+———————————————+
TableOpMsg_typeMsg_text
+————————-+——–+———-+———————————————+
sports_results.mytablerepairerrorCan’tfindfile:‘mytable.MYI’(errno:2)
+————————-+——–+———-+———————————————+修复失利的缘故原由时索引文件丧失大概其头部遭到了损坏,为了使用相干界说文件来修复,必要用USE_FRM选项。比方:
mysql>REPAIRTABLEmytableUSE_FRM;
+————————-+——–+———-+————————————+
TableOpMsg_typeMsg_text
+————————-+——–+———-+————————————+
sports_results.mytablerepairwarningNumberofrowschangedfrom0to2
sports_results.mytablerepairstatusOK
+————————-+——–+———-+————————————+我们能够看到Msg_test表项的输入信息”ok”,表名已乐成修复受损表。
2>用mysql内建命令mysqlcheck来修复
当mysql服务在运转时,也能够用mysql内建命令mysqlcheck来修复。
语法:mysqlcheck-r数据库名表名-uuser-ppass
%mysqlcheck-rsports_resultsmytable-uuser-ppass
sports_results.mytableOK使用mysqlcheck能够一次性修复多个表。只需在数据库名后列出响应表名便可(用空格离隔)。大概数据库名后不加表名,将会修单数据库中的一切表,比方:
%mysqlcheck-rsports_resultsmytableevents-uuser-ppass
sports_results.mytableOK
sports_results.eventsOK
%mysqlcheck-rsports_results-uuser-ppass
sports_results.mytableOK
sports_results.eventsOK3>用myisamchk修复
用这类体例时,mysql服务必需停失落,大概所操纵的表处于不举动形态(选项skip-external-locking没被利用)。记住必定要在相干.MYI文件的路径下大概本人界说其路径。
语法:myisamchk[选项][表名]
上面是其选项和形貌
–backup,-B在举行修复前作相干表得备份
–correct-checksum改正校验和
–data-file-length=#,-D#重修表时,指定命据文件得最年夜长度
–extend-check,-e试图往恢复每一个数据行,会发生一些渣滓数据行,万般无法的情形下用
–force,-f当碰到文件名不异的.TMD文件时,将其掩盖失落。
keys-used=#,-k#指定所用的keys可加速处置速率,每一个二进制位代表一个key.第一个key为0
–recover,-r最经常使用的选项,年夜多半损坏都能够经由过程它来修复。假如你的内存充足年夜,能够增年夜参数sort_buffer_size的值来加速恢复的速率。可是碰到独一键因为损坏而不惟一的表时,这类体例不论用。
–safe-recover-o最完全的修复体例,可是比-r体例慢,一样平常在-r修复失利后才利用。这类体例读出一切的行,并以举动基本来重修索引。它的硬盘空间需求比-r体例略微小一点,因为它没创立分类缓存。你能够增添key_buffer_size的值来加速修复的速率。
–sort-recover,-nmysql用它类分类索引,只管了局是一时文件会十分年夜
–character-sets-dir=…包括字符集设置的目次
–set-character-set=name为索引界说一个新的字符集
–tmpdir=path,-t假如你不想用情况变量TMPDIR的值的话,能够自界说一时文件的寄存地位
–quick,-q最快的修复体例,当数据文件没有被修正时用,当存在多键时,第二个-q将会修正数据文件
–unpack,-u解开被myisampack打包的文件
myisamchk使用的一个例子
%myisamchk-rmytable
-recovering(withkeycache)MyISAM-table‘mytable.MYI’
Datarecords:0
怀疑这些功能在MySQL5.0中的成熟性。充其量它们在MySQL中被支持的时间也就一年左右,而在MySQL学习教程其他关系型数据库中则已经存在了近10年的时间。 |
|