也可能其中任意具体相关方法都可以适用于本网站数据库。我暂时没有条件测试,有条件的去测试一下,有望解决网站数据库报此错误的问题。 预防措施: 1、一定要备份一次网站数据库,起码保留了表结构,有些可有可无的数据,可以直接覆盖。 2、重要的数据要经常注意备份,一般一个月左右备份一次。 3、出现此类错误,一般能够解决,经jb51.net测试下面的具体相关方法是比较可行的。 复制具体相关代码 具体相关代码如下: 解决办法:首先需要定位到您的mysql的bin目录,里面包含myisamchk.exe网站网站文件的目录 ./myisamchk -c -r 网站数据库表MYI网站网站文件的路径(例如:/home/mysql/var/crawlerfeedsky/aaaa.MYI) 假如如果还不行,就-f 强制修复 windows站点服务器下mysql的修复具体相关方法: F:\sqldata\mysql\bin>cd .. 返回上级目录 F:\sqldata\mysql>cd data 进入网站数据库所在目录(mysql的网站数据库网站网站文件都是放在data这个目录里面的) F:\sqldata\mysql\data>cd jb51 进入网站数据库,windows站点服务器中网站数据库就是一个网站网站文件夹(这里以jb51为例子) F:\sqldata\mysql\data\jb51>myisamchk -r jb51_soft - recovering (with sort) MyISAM-table 'jb51_soft' Data records: 7216 - Fixing index 1 - Fixing index 2 - Fixing index 3 F:\sqldata\mysql\data\jb51> jb51_soft为网站数据库的表名,提示哪个表错误,就修复哪个表。 为了以后方便,咱们可以写成一个批处理,将这个网站网站文件保存为fixit.bat放到网站数据库所在的目录即可。 复制具体相关代码 具体相关代码如下: myisamchk -r jb51_soft 下面是网上收集的多种具体相关方法,大家可以测试下。 (一) 昨晚浏览自己的Blog的时候,突然发现所有页面都无法显示,到后台查看的时候,发现一个”Table ‘xxx' is marked as crashed and should be repaired” 的错误。连忙上网搜索,原来修改这个严重的错误很简单: 1. 进入管理mysql的phpmyadmin 2. 在左则选中自己的网站数据库 3. 在右则勾选中错误信息中的那个'xxx'表 4. 滚动屏幕到下面,有个下拉菜单(With selected:),选择”Repair table” 修改之后,并没有发现有什么数据损失,连忙备份了一份网站数据库到邮件里面,备份还是很重要的! (二) 现象: mysql> use yourealcn Database changed mysql> select user,company from biz_user where commend='1' order by regtime desc,checked desc limit 0,5; ERROR 145 (hY000): Table './yourealcn/biz_user' is marked as crashed and should be repaired mysql> exit 使用开始执行命令myisamchk修复网站数据库的MYI网站网站文件即可 # /usr/local/mysql5/bin/myisamchk -c -r /bak/lib/mysql/yourealcn/biz_user.* myisamchk: error: '/bak/lib/mysql/yourealcn/biz_user.frm' is not a MyISAM-table --------- myisamchk: error: '/bak/lib/mysql/yourealcn/biz_user.MYD' is not a MyISAM-table --------- - recovering (with sort) MyISAM-table '/bak/lib/mysql/yourealcn/biz_user.MYI' Data records: 20414 - Fixing index 1 - Fixing index 2 - Fixing index 3 - Fixing index 4 (三) Caused by: java.sql.SQLException: Table '表名' is marked as crashed and should be repaired 解决办法: ./myisamchk -c -r 网站数据库表MYI网站网站文件的路径(例如:/home/mysql/var/crawlerfeedsky/aaaa.MYI) 假如如果还不行,就-f 强制修复 (四) 今天上站点服务器一看,发现网页错误,无法连接网站数据库站点服务器。mysql服务自己down掉了,然后重新启动站点服务器,发现网页无法打开,提示: [mysql]Table tblName is marked as crashed and should be repaired Mysql提示tblName表格已损坏,需要修复,解决具体相关方法: 进入到对应的网站数据库目录: cd /var/lib/mysql/dbname 使用myisamchk修复: shell> myisamchk -r tblName (五) 我用的修复开始执行命令是:myisamchk -r bbsthreads 其中bbsthreads是我出问题的表名,当然使用这个开始执行命令还得进入mysql您所出问题的网站数据库的表的存放路径,具体更详细的开始执行命令可以看帮助:myisamchk --help; 假如如果用以上开始执行命令您不能解决问题请看后面,后面的内容是我转载的。 我的网站出问题了,访问一看,果然全屏报错,检查mysql日志,错误信息为: Table '.\dedecmsv4\dede_archives' is marked as crashed and should be repaired 提示说cms的文章表dede_archives被标记有问题,需要修复。于是赶快恢复历史数据,上网查找原因。最终将问题解决。解决具体相关方法如下: 找到mysql的安装目录的bin/myisamchk相关工具,在开始执行命令行中输入: myisamchk -c -r ../data/dedecmsv4/dede_archives.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实用程序来获得有关网站数据库表的信息或检查、修复、网站seo优化他们。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来检查表。如何通过SQL找出2个表里值不同的列的具体相关方法