'Table is Marked as crashed and should be repaired Error'.Mysql表损坏解决方案
问题表现:由于服务器崩溃导致表损坏无法打开或者能打开但是无法写入数据(提示主键重复但实际没有该主键且该主键值在最大值范围内)。
本文提供两种检查修复方式:mysqlcheck 和 myisamchk ,均在MySQL安装目录bin文件夹下。
一、MysqlCheck 和 Myisamchk 的区别
mysqlcheck 和 myisamchk 程序主要用于检查和修复数据表(主要是 MyISAM 表),比如由于服务器崩溃导致的 MyISAM 表损坏。以下是两者的比较:
1、两者均能检测、修复、分析 MyISAM 类型表。 mysqlcheck 还能优化 MyISAM 表,同时还能检测 InnoDB 类型表,分析 BDB 表。但有些操作是 mysqlcheck 不能匹敌的,比如,myisamchk 可以启动和禁止索引。
2、二者在使用上有着很大的区别。mysqlcheck 是一个客户端程序,可通过网络连接到服务器。他提供了一个可对接服务器表维护指令的命令行接口,比如 CHECK TABLE 和 REPAIR TABLE。mysqlcheck会依据命令行上输入的指令,发送对应的SQL描述到服务器,供服务器执行。这就意味着服务器必须是处于启动运行状态,同时也意味着你能够通过 mysqlcheck 连接到远程服务器。相反, myisamchk 不是客户端程序,他是一个直接操作 MyISAM 物理表的通用工具。这就意味着你必须在 MyISAM 表文件所在的服务器上使用这个工具。同时,当你检测表时需要有文件读取权限,当修复表时需要有写入权限。
3、两者在运行时,与服务器的关系也大不相同。使用 mysqlcheck 时,你仍可以和服务器进行交互。因为 mysqlcheck 是要求服务器自己去进行表的检测和修复。使用 myisamchk 时,你需要确保服务器并没有打开目标表且目标表没有被其他人使用中。如果myisamchk和mysql server同时对表操作,可能导致表被损坏。因此,为了避免这种情况的发生,在使用 myisamchk 时应停掉MySQL服务。 myisamchk 在检测修复表的过程中可能会锁定表文件。
二、MysqlCheck 使用简介
1、远程检测表,如图(表正常):

2、服务器端使用 mysqlcheck 时则不需要指定远程服务器地址,如图(表存在问题):


指令说明:
-c 检查操作,后边跟数据库名称 [表名]
-h 主机地址
-P 端口号
-u 用户名
-p 密码
注意:
1)如果提示 “mysqlcheck: [ERROR] unknown option '--no-beep'” ,则需要修改MySQL配置文件,将 [client] 下的 no-beep 注释掉(注释符号 #)
2)命令使用过程中需要输入用户凭证,如果服务器端存在多个实例,还需要指定实例端口号。
3、使用 mysqlcheck 修复表,如下图:

mysqlcheck 不能修复唯一键不唯一的错误...
指令说明:
-r 数据修复.Perform a repair that can fix almost anything except unique keys that are not unique.
更多相关操作,看这里
三、Myisamchk 使用简介
如第一部分,该工具只能在服务器端使用,且需要关闭MySQL服务。
使用 Myisamchk 修复数据,需要进入到MySQL物理库对应的文件夹,然后执行修复指令,如下图:

指令说明:
-r 数据恢复。If you have lots of memory, you should increase the value of myisam_sort_buffer_size.
注意:
第一次运行时, 抛出 “myisamchk: error: myisam_sort_buffer_size is too small” 错误,此时只需要在指令后面追加 --sort_buffer_size=2G(根据需要)即可。
更多相关操作,看这里
四、使用后感
myisamchk 修复数据时简单粗暴,感觉效率更快一下(感觉,没证据...)
上边的两种方法均已验证,修复了我的三张表。
表错误的表现1:[Err] 1062 - Duplicate entry '31729205' for key 'PRIMARY' 主键为自增(int类型),插入的主键数据在原表中不存在。
表错误的表现2:*** marked crashed...
表错误的表现3:查看表对象信息时,表的基本信息表述为空
问题解决,结贴。没有更深入的研究了解,欢迎评论交流~
参考:
1.How to Check and Repair MySQL Tables Using Mysqlcheck
2.MySQL Table is marked as crashed and last (automatic?) repair failed
5.mysqlcheck — A Table Maintenance Program
6.myisamchk — MyISAM Table-Maintenance Utility
'Table is Marked as crashed and should be repaired Error'.Mysql表损坏解决方案的更多相关文章
- linux Table is marked as crashed and should be repaired
linux Table is marked as crashed and should be repaired 2014-07-28 10:34 1282人阅读 评论(0) 收藏 举报 分类: da ...
- mysql 错误:Table is marked as crashed and should be repaired 解决办法
遇到这个问题几个敲命令轻松搞定 1.首先进入mysql命令台: mysql -u root -p 回车 输入密码 2.查询所有的库 mysql> show databases; 3.进入数据库“ ...
- Table is marked as crashed and should be repaired 解决办法
遇到这个问题几个敲命令轻松搞定 1.首先进入mysql命令台: mysql -u root -p 回车 输入密码 2.查询所有的库 mysql> show databases; 3.进入数据库 ...
- Table '' is marked as crashed and should be repaired 解决方法
解决方法: 找到mysql的安装目录的bin/myisamchk工具,在命令行中输入: myisamchk -c -r ../data/mysql/user.MYI 然后myisamchk 工具会帮助 ...
- 解决 MySQL 的 Table is marked as crashed and should be repaired 问题
解决方法: 找到mysql的安装目录的bin/myisamchk工具,在命令行中输入: myisamchk -c -r ../data/mysql/user.MYI 然后myisamchk 工具会帮助 ...
- azkaban-web-start.sh启动时出现Table 'execution_flows' is marked as crashed and should be repaired Query错误的解决办法(图文详解)
问题详情 [hadoop@master bin]$ ./azkaban-web-start.sh Using Hadoop Using Hive from /home/hadoop/app/hive ...
- 【MySQL Errors】Table 'xxx' is marked as crashed and should be repaired 的解决方案
现象描述 访问 Zabbix Web,出现如下错误提示: • Error in query [SELECT * FROM history_uint h WHERE h.itemid='25067' O ...
- mysq l错误Table ‘./mysql/proc’ is marked as crashed and should be repaired
续上一篇,解决了上一篇中的问题后,启动成功,但是在数据库中操作会存在一些问题,一些操作报一下异常: Table './mysql/proc' is marked as crashed and shou ...
- 解决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 ...
随机推荐
- 配置jenkins slave 问题,ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.
因为需要需要搭建一套自动化环境的windows电脑作为slave,简单的把原来用来mac上的job配置一模一样的配置了下,运行时遇到如上问题,google半天百思不得其解, 后来尝试把SCM里面的br ...
- 存储树形的数据表转为Json
/// <summary> /// 根据DataTable生成Json树结构 /// </summary> /// <param name="tabel&quo ...
- 源码速读及点睛:HashMap
Java 8 HashMap的分离链表 从Java 2到Java 1.7,HashMap在分离链表上的改变并不多,他们的算法基本上是相同的.如果我们假设对象的Hash值服从平均分布,那么获取一个对象需 ...
- 如何使用 Telegram
Telegram是一款加密的实时通讯软件,本文告诉大家如何使用 这个软件. 在使用之前,需要保证自己已经开了梯子,如果没有梯子,那么就无法使用这个工具. 假如梯子是 127.0.0.1 端口 1080 ...
- HTML5的audio在手机网页上无法自动加载/播放音乐,能否实现该功能?
在IOS中第一次调用play方法播放音频会被阻止,必须得等用户有交互动作,比如touchstart,click后才能正常调用,在微信中可以通过监听WeixinJSBridgeReady事件来提前播放一 ...
- 前端模块化(AMD和CMD、CommonJs)
知识点1:AMD/CMD/CommonJs是JS模块化开发的标准,目前对应的实现是RequireJs/SeaJs/nodeJs. 知识点2:CommonJs主要针对服务端,AMD/CMD主要针对浏览器 ...
- Mybatis中的jdbcType的作用
使用MyBatis框架做更新操作时,在该字段需要更新的内容为空时,就会出现1111错误,也就是无效的列类型,这个时候你就要使用jdbcType.至于什么时候要使用到javaType我还没遇到过,而且我 ...
- python数据类型之字典
字典定义 字典是一种 key-value 的数据类型,这点很重要,是区别使用列表和字典的依据. 语法格式: info = { 'stu1101': "Aaron", 'stu110 ...
- Linux : task work 机制
task work机制可以在内核中向指定的进程添加一些任务函数,这些任务函数会在进程返回用户态时执行,使用的是该进程的上下文.包括下面的这些API: task_work_add task_work_c ...
- iOS中表视图单元格事件用nib和storyboard的两种写法总结
从ios6开始,苹果公司推出了storyborad技术取代了nib的写法,这样代码量确实少写了很多,也比较简洁.但是,从学习的角度来说,阿堂认为 用nib的写法,虽然多了些代码,但是对于掌握知识和原理 ...