一日正在上班,朋友的QQ图标就激烈的闪亮起来,一看,原来是论坛出现问题了,具体报错如下:

Table '.\Tablename\posts' is marked as crashed and should be repaired

提示说论坛的帖子表posts被标记有问题,需要修复。我记得以前也出现过类似的问题,但是只要点击Phpmyadmin上的repair按纽就自动修复了,但是这次很绝,什么都没有.于是赶快上网查找原因。最终将问题解决。解决方法如下:

找到mysql的安装目录的bin/myisamchk工具,在命令行中输入:

myisamchk -c -r ../data/tablename/posts.MYI

然后myisamchk 工具会帮助你恢复数据表的索引。好象也不用重新启动mysql,问题就解决了。

问题分析:

1、
错误产生原因,有网友说是频繁查询和更新dede_archives表造成的索引错误,因为我的页面没有静态生成,而是动态页面,因此比较同意这种说法。
还有说法为是MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性的断电、在提在数据库表提供服务时对表的原文件进行某种操作都有可能导致
MYSQL数据库表被损坏而无法读取数据。总之就是因为某些不可测的问题造成表的损坏。

问题的编号为145

2、问题解决办法。

当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次--这通常是上一次修复操作遗留下来的。 
这三种修复方法如下所示: 
% myisamchk --recover --quick /path/to/tblName 
% myisamchk --recover /path/to/tblName 
% myisamchk --safe-recover /path/to/tblName

第一种是最快的,用来修复最普通的问题;而最后一种是最慢的,用来修复一些其它方法所不能修复的问题。

检查和修复MySQL数据文件 
如果上面的方法无法修复一个被损坏的表,在你放弃之前,你还可以试试下面这两个技巧: 

果你怀疑表的索引文件(*.MYI)发生了不可修复的错误,甚至是丢失了这个文件,你可以使用数据文件(*.MYD)和数据格式文件(*.frm)重新生
成它。首先制作一个数据文件(tblName.MYD)的拷贝。重启你的MySQL服务并连接到这个服务上,使用下面的命令删除表的内容: 
mysql> DELETE FROM tblName; 

删除表的内容的同时,会建立一个新的索引文件。退出登录并重新关闭服务,然后用你刚才保存的数据文件(tblName.MYD)覆盖新的(空)数据文件。
最后,使用myisamchk执行标准的修复(上面的第二种方法),根据表的数据的内容和表的格式文件重新生成索引数据。

如果你的表的
格式文件(tblName.frm)丢失了或者是发生了不可修复的错误,但是你清楚如何使用相应的CREATE
TABLE语句来重新生成这张表,你可以重新生成一个新的.frm文件并和你的数据文件和索引文件(如果索引文件有问题,使用上面的方法重建一个新的)一
起使用。首先制作一个数据和索引文件的拷贝,然后删除原来的文件(删除数据目录下有关这个表的所有记录)。

启动MySQL服务并使用当初的CREATE TABLE文件建立一个新的表。新的.frm文件应该可以正常工作了,但是最好你还是执行一下标准的修复(上面的第二种方法)。

3、myisamchk工具介绍(见mysql的官方手册)

可以使用myisamchk实用程序来获得有关数据库表的信息或检查、修复、优化他们。myisamchk适用MyISAM表(对应.MYI和.MYD文件的表)。

调用myisamchk的方法:

shell> myisamchk [options] tbl_name ...
options指定你想让myisamchk做什么。在后面描述它们。还可以通过调用myisamchk --help得到选项列表。

tbl_name
是你想要检查或修复的数据库表。如果你不在数据库目录的某处运行myisamchk,你必须指定数据库目录的路径,因为myisamchk不知道你的数据
库位于哪儿。实际上,myisamchk不在乎你正在操作的文件是否位于一个数据库目录;你可以将对应于数据库表的文件拷贝到别处并且在那里执行恢复操
作。

如果你愿意,可以用myisamchk命令行命名几个表。还可以通过命名索引文件(用“ .MYI”后缀)来指定一个表。它允许你通过使用模式“*.MYI”指定在一个目录所有的表。例如,如果你在数据库目录,可以这样在目录下检查所有的MyISAM表:

shell> myisamchk *.MYI
如果你不在数据库目录下,可通过指定到目录的路径检查所有在那里的表:

shell> myisamchk /path/to/database_dir/*.MYI
你甚至可以通过为MySQL数据目录的路径指定一个通配符来检查所有的数据库中的所有表:

shell> myisamchk /path/to/datadir/*/*.MYI
推荐的快速检查所有MyISAM表的方式是:

shell> myisamchk --silent --fast /path/to/datadir/*/*.MYI
如果你想要检查所有MyISAM表并修复任何破坏的表,可以使用下面的命令:

shell> myisamchk --silent --force --fast --update-state \
          -O key_buffer=64M -O sort_buffer=64M \
          -O read_buffer=1M -O write_buffer=1M \
          /path/to/datadir/*/*.MYI
该命令假定你有大于64MB的自由内存。关于用myisamchk分配内存的详细信息,参见5.9.5.5节,“myisamchk内存使用”。

当你运行myisamchk时,必须确保其它程序不使用表。否则,当你运行myisamchk时,会显示下面的错误消息:

warning: clients are using or haven't closed the table properly
这说明你正尝试检查正被另一个还没有关闭文件或已经终止而没有正确地关闭文件的程序(例如mysqld服务器)更新的表。

如果mysqld正在运行,你必须通过FLUSH TABLES强制清空仍然在内存中的任何表修改。当你运行myisamchk时,必须确保其它程序不使用表。避免该问题的最容易的方法是使用CHECK TABLE而不用myisamchk来检查表。

mysql错误:Table XXX is marked as crashed and should be repaire相关推荐

  1. 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 ...

  2. 解决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 ...

  3. mysql库提示 Table ‘xxx’ is marked as crashed and should be repaired

    公司信息站,机房冷启一次.再次开机后,网站能打开,信息能查,但是个别表出现提示:Table 'xxx' is marked as crashed and should be repaired .且无法 ...

  4. 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异常,下面给出修改方案,经试用可 ...

  5. Mysql错误:Table 'xxx'is marked as crashed and should be repaired

    错误编号:145 问题分析: 1.是频繁查询和更新表造成的索引错误,因为页面没有静态生成,而是动态页面. 2.是MYSQL数据库因为某种原因而受到了损坏. (如:数据库服务器突发性的断电.在数据库表提 ...

  6. mysql异常修复_MySQL错误修复:Table xx is marked as crashed and last (automatic?) repair failed...

    问题一 Table xx is marked as crashed and last (automatic?) repair failed 有开发找到我,说数据库坏了,连不上数据库,看了下 MySQL ...

  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. Table 'xxxxx' is marked as crashed and last 解决办法

    为什么80%的码农都做不了架构师?>>>    网站数据突然全部为空 进phpmyadmin查看表提示Table '.xxxx' is marked as crashed and l ...

  9. ssh mysql 警告_SSH连接MySQL 出现Table 'xxx' doesn't exist

    SSH连接MySQL 出现Table 'xxx' doesn't exist 在applicationContext.xml中的配置 com.mysql.jdbc.Driver jdbc:mysql: ...

  10. mysql错误Table ‘./mysql/proc’ is marked as crashed and should be repaired

    今天服务器当机了,重启后就发现了如下错误: Table './mysql/proc' is marked as crashed and should be repaired 解决方法: repair ...

最新文章

  1. 【怎样写代码】小技巧 -- .NET配置文件详解
  2. JVM 发生内存溢出的 8 种原因、及解决办法
  3. 从零开始学python网络爬虫-从零开始学Python 三(网络爬虫)
  4. Github上 Star 数相加超过 7w+ 的三个面试相关的仓库推荐
  5. 如何计算MP3总时长的问题(二)
  6. can协议crc计算_CAN总线的升级版——CAN FD简介
  7. java mysql 触发器 存储过程_mysql 触发器 存储过程 java调用
  8. 循环往list中add对象却总是add的是一个对象
  9. android 手机内存uri_android 的各种目录详解
  10. Python之路【第三篇】:Python基础(二)
  11. JSP技术之JavaBean
  12. Graph Algorithm
  13. 谈谈可视化编程 (转)
  14. Python 入门演示 1
  15. python数据分析师网易云课堂_网易云课堂 数据分析(一)
  16. 一文带你了解Serverless架构及应用场景
  17. 总结几个查找论文网址
  18. AI人工智能自动化测试
  19. 【PHP版】顺丰下单API 、查询订单API、取消订单API
  20. 当int类型超出了[-2147483648,2147483647]会发生什么?

热门文章

  1. 毁灭程序员效率的 15 个障碍
  2. 单列通栏布局版式示意HTML,整体布局2——页面排版布局
  3. 什么是Instagram直播购物?如何设置Instagram 直播购物?
  4. 一、玩转小米路由器mini之刷openwrt固件
  5. 从0到1,用张三的故事讲述一张中学生也能看懂的财务报表
  6. matlab心理学函数包,心理学研究方法:基于MATLAB和PSYCHTOOLBOX
  7. HoG特征以及SVM的配合
  8. JS函数传参长度限制
  9. word文字上下间距怎么调_Word表格调整(行高、文字上下间距等)
  10. 第三次作业(尤心心)