修复mysql表
也许很多人遇到过类似Can’t open file: ‘[Table]mytable.MYI’ 这样的错误信息,却不知道怎么解决他,下面我们做个介绍,
多数情况下,数据库被破坏只是指索引文件受到了破坏,真正的数据被破坏掉的情况非常少。大多数形式的数据库破坏的的修复相当简单。
和前面的校验一样,修复的方式也有三种。
下面讲的方法只对MyISAM格式的表有效。其他类型的损坏需要从备份中恢复。
1,REPAIR TABLE SQL statement(mysql服务必须处于运行状态)。
2,命令mysqlcheck(mysql服务可以处于运行状态)。
3,命令myisamchk(必须停掉mysql服务,或者所操作的表处于不活动状态)。
在修复表的时候,最好先作一下备份。所以你需要两倍于原始表大小的硬盘空间。请确保在进行修复前你的硬盘空间还没有用完。
1>用”repair table”方式修复
语法:repair table 表名 [选项]
选项如下:
QUICK 用在数据表还没被修改的情况下,速度最快
EXTENDED 试图去恢复每个数据行,会产生一些垃圾数据行,万般无奈的情况下用
USE_FRM 用在.MYI文件丢失或者头部受到破坏的情况下。利用.frm的定义来重建索引
多数情况下,简单得用”repair table tablename”不加选项就可以搞定问题。但是当.MYI文件丢失或者头部受到破坏时,这样的方式不管用,例如:
mysql> REPAIR TABLE mytable;
+————————-+——–+———-+———————————————+
| Table | Op | Msg_type | Msg_text |
+————————-+——–+———-+———————————————+
| sports_results.mytable | repair | error | Can’t find file: ‘mytable.MYI’ (errno: 2) |
+————————-+——–+———-+———————————————+
修复失败的原因时索引文件丢失或者其头部遭到了破坏,为了利用相关定义文件来修复,需要用USE_FRM选项。例如:
mysql> REPAIR TABLE mytable USE_FRM;
+————————-+——–+———-+————————————+
| Table | Op | Msg_type | Msg_text |
+————————-+——–+———-+————————————+
| sports_results.mytable | repair | warning | Number of rows changed from 0 to 2 |
| sports_results.mytable | repair | status | OK |
+————————-+——–+———-+————————————+
我们可以看到Msg_test表项的输出信息”ok”,表名已经成功修复受损表。
2>用mysql内建命令mysqlcheck来修复
当mysql服务在运行时,也可以用mysql内建命令mysqlcheck来修复。
语法:mysqlcheck -r 数据库名 表名 -uuser -ppass
%mysqlcheck -r sports_results mytable -uuser -ppass
sports_results.mytable OK
利用mysqlcheck可以一次性修复多个表。只要在数据库名后列出相应表名即可(用空格隔开)。或者数据库名后不加表名,将会修复数据库中的所有表,例如:
%mysqlcheck -r sports_results mytable events -uuser -ppass
sports_results.mytable OK
sports_results.events OK

%mysqlcheck -r sports_results -uuser -ppass
sports_results.mytable OK
sports_results.events OK
3>用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, -n mysql用它类分类索引,尽管结果是临时文件会非常大
–character-sets-dir=… 包含字符集设置的目录
–set-character-set=name 为索引定义一个新的字符集
–tmpdir=path, -t 如果你不想用环境变量TMPDIR的值的话,可以自定义临时文件的存放位置
–quick, -q 最快的修复方式,当数据文件没有被修改时用,当存在多键时,第二个-q将会修改 数据文件
–unpack, -u 解开被myisampack打包的文件
myisamchk应用的一个例子
% myisamchk -r mytable
- recovering (with keycache) MyISAM-table ‘mytable.MYI’

修复mysql表快速解决is marked as crashed and should be repaired故障相关推荐

  1. [MySQL]快速解决is marked as crashed and should be repaired故障

    登录mysql执行 repair table table_name 完毕 下面的方法试了不管用 -------------------------------------- 具体报错如下: Table ...

  2. mysql marked crashed_[MySQL]快速解决is marked as crashed and should be repaired故障

    具体报错如下: Table '.\Tablename\posts' is marked as crashed and should be repaired 提示说论坛的帖子表posts被标记有问题,需 ...

  3. 快速解决is marked as crashed and should be repaired故障

    具体报错如下: Table '.\Tablename\posts' is marked as crashed and should be repaired 提示说论坛的帖子表posts被标记有问题,需 ...

  4. mysql marked crashed_MySQL解决is marked as crashed and should be repaired故障

    具体报错如下: Table '.\Tablename\posts' is marked as crashed and should be repaired 提示说论坛的帖子表posts被标记有问题,需 ...

  5. mysql table crashed_快速解决MySQL:Table xxx is marked as crashed and should be repaired五个办法...

    查看MySQL错误日志看到 Table xxx  is marked as crashed and should be repaired 解决办法如下 第一种: 1.首先进入mysql命令台: mys ...

  6. mysql数据表出现Table is marked as crashed and should be repaired 解决办法

    遇到这个问题几个敲命令轻松搞定 1.首先进入mysql命令台: mysql -u root -p 回车 输入密码 2.查询所有的库 mysql> show databases; 3.进入数据库& ...

  7. 解决数据库 Table 'content_tags' is marked as crashed and should be repaired 表损坏问题

    今天突然网站TAG页面打不开了,打开debug,发现提示 Table 'content_tags' is marked as crashed and should be repaired 这样的错误 ...

  8. 解决mysql Table ‘xxx’ is marked as crashed and should be repaired的问题。

    解决mysql Table 'xxx' is marked as crashed and should be repaired的问题. 某个表在进行数据插入和更新时突然出现Table 'xxx' is ...

  9. java.sql.SQLException: Table 'XXX' is marked as crashed and should be repaired异常修复

    服务器日志报java.sql.SQLException: Table 'XXX' is marked as crashed and should be repaired异常,下面给出修改方案,经试用可 ...

最新文章

  1. Leangoo项目管理软件管理 传统硬件产品开发全流程
  2. vuex中组合action的使用
  3. [leetcode][math] Add Digits
  4. 六十六、实现Vue项目首页轮播图(vue-awesome-swiper)
  5. 牛客14605 画三角
  6. 算法动画 - 理解函数曲线
  7. QT5开发及实例学习之十一Qt5文件操作功能
  8. 前端取消置顶功能_双十一来临,怎么让便签app记录的清空购物车便签内容置顶显示? - 学显...
  9. STM32工作笔记0071---内存管理实验
  10. Permission denied (publickey). 解决方法
  11. 在 Mac 上如何将 Better Zip 设置为自动更新?
  12. 怎没使用新浪微博html5,如何使用新浪微博
  13. sqlplus 命令登录 Oracle
  14. postman控制台打印数据
  15. VTK图像处理之访问图像像素值
  16. Python如此神奇,让繁琐工作自动化 (文中含Python基础)
  17. Java随笔记 - TCP通信的基本过程,三次握手,四次挥手
  18. 【其它】Mac配置输入法切换快捷键
  19. android集成twitter登录
  20. 在Mac上安装Ruby on Rails

热门文章

  1. sdkman使用教程
  2. shell 向 awk 传参
  3. Lcd(一)显示原理
  4. 影响创业者行动力的五大理由
  5. matlab简介(下)
  6. 当你用STMS传输请求时,那些选项都是啥意思
  7. 啦啦~~~记录江苏省C等级考试相关题目
  8. 大数据架构和模式(五):利用大数据识别保险行业中的欺诈业务案例
  9. html中div被挤下来,移动端布局,底部的div被挤下去,麻烦帮看看
  10. LeetCode 695. 岛屿的最大面积【c++/java详细题解】