Chinaunix首页 | 论坛 | 博客
  • 博客访问: 171064
  • 博文数量: 65
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-16 08:59
文章分类

全部博文(65)

文章存档

2011年(3)

2010年(3)

2009年(43)

2008年(16)

我的朋友

分类: LINUX

2009-11-12 12:41:29

mysql repair table-Can't open file: [table]mytable.MYI
也午有许多人遇到过类似的Can't open file: '[tables]mytables.MYI这样的错误住处却不知道怎么解决它,多数情况下,数据库被破坏只是指索引文件受到了破坏,真正的数据坏掉的情况非常少.大多数形式的数据库破坏的修复相当简单,修复的方式也有三种.
1 REPAIR TABLE SQL statement  (mysql服务必须处于运行状态)
2 命令mysqlcheck(mysql服务可以处于运行状态)
3 命令myisamchk(必须停掉mysql服务或者所操作的表处于不活动状态)
 
在修复表的时候,最好先作一下备份.所以你需要两倍于原始表大小的硬盘空间
1 用"repair table" 方式修复
 语法: repair tables 表名[选项]
[选项] 如下
QUICK  用在数据表还没有被修改的情况下,速度最快
EXTENDED 试图去恢复每个数据行,会产生一些垃圾数据行,万般无奈的情况下用
USE_FRM 用在.MYI文件丢失或者头部受到破坏的情况下,利用.FRM的定义来重建索引.

多数情况下,简单得用"repair table tablename"不加选项的就可以搞定问题,但是是当.MYI文件丢失或者头部受到破坏时,这样的方式不管用,需要使用USE_FRM选项
mysql> repair table tablename USE_FRM;

2 用mysql内建的命令mysqlcheck来修复
当mysql服务在运行时,也可以用mysql内建的命令mysqlcheck来修复.
语法:  mysqlcheck -r 数据库名 表名  --uuser --ppass
 
利用mysqlcheck 可以一次性修复多个表.只要在数据库名后列出相应表名(用空格隔开).或者数据库名不加表名,将会修复数据库中的所有表.
 
阅读(522) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~