热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » MySQL/MSSQL编程 » 修复论坛“is marked as crashed and last (automatic?) repair failed”的

修复论坛“is marked as crashed and last (automatic?) repair failed”的

论坛链接
  • 修复论坛“is marked as crashed and last (automatic?) repair failed”的几种方法
  • 发布时间:2009-01-14 13:14:59    浏览数:12733    发布者:superadmin    设置字体【   
以前就讨论过很多论坛方面的问题,比如修复论坛数据库、优化论坛数据库以及优化论坛的访问负载能力,特别是这个discuz6版本,默认安装下的版本,真的是性能不敢恭维,难道稍大一点的论坛,都要用专用服务器来抗吗?难道每一个稍大点论坛都要有一个精通discuz论坛代码、精通mysql数据库的技术人员吗?这策略,太让人难以接受,以前的版本包括最近的discuz5.5就非常好,只是功能上稍欠缺了一些而已!因此,论坛,性能也是很重要的,phpwind这方面做得就是比discuz好,当然,最近几个phpwind版本,也在这方面有所忽视了。

今天遇到的这个问题过程是这样的:一个朋友论坛,他说有几个月没有优化了,discuz官方说,过几个月,可以优化一下数据库,提防碎片过多,影响论坛速度,因此我就登陆到他论坛后台,先更新了下系统缓存,然后直接点击优化数据库,提示有二百多M碎片数据表需要优化,这已经非常多了,默认是选择所有需要优化表状态,直接点击提交,进行优化。优化时,网站已经不能访问了,然后连接服务器,也出现连接非常缓慢的情况,怀疑是优化时占用资源过多,引起服务器响应不过来其他请求,假死机了。继续远程连接,仍然连接不上,无奈,只有关掉刚才的优化网页,依照经验,这时候是不能让机房重启服务器的,这种硬性的重启是非常容易损失表以及表中的数据库。关掉优化网页以后,等了一会,可以连接上远程桌面了,此时网站网页已经提示错误代码“posts' is marked as crashed and last (automatic?) repair failed”,看越来是posts表损坏,自动修复没有成功。这个表存有大量的帖子数据,是非常重要而关键的表,这个表如果损失不能修复,论坛就要麻烦大了。

想了想,依据以前的经验,discuz论坛官方提供的有数据库修复文件“repair.php”,把此文件上传至网站后,在浏览器中运行此文件,可以依照提示“检测并修复数据库一次”或“检测并修复数据库五次”,用此文件没有用,修复完以后,状态都提示OK,但网页访问故障依旧。用discuz官方提供的“tools.php”,发现检测和修复数据库功能和“repair.php”差不多,只是集成了一些其他的工具。

到discuz论坛,以关键字“修复”搜索了下,发现童虎有一篇贴子“教你如何修复数据表”,其中提到了几种方法来修复数据表:

服务器非法关机,有可能会对部分数据库造成一定影响。一般运行会报错,**.MYI 不能打开。 Can't find file: '***.MYI' 请使用repair.php或者使用phpmyadmin修复一下数据表。

1.上传repair.php到论坛根目录下,然后在浏览器运行http://你的论坛地址/repair.php
一般点击第一个链接“repair.php?html=1&check=1”就可以修复了,
如果不能修复可以尝试点击第二个连接“repair.php?check=1&iterations=5”
就可以了。
提醒:修复完表操作以后一定记得要从服务器删除这个文件repair.php

2.使用phpmyadmin修复数据表
进入论坛数据库,然后选择要修复的表,在页脚下拉框选择“修复”即可。

3.如果您的服务器是独立主机强烈建议使用命令行方式进行修复:
修复前将mysql服务停止。
如果是Win主机,打开命令行方式,然后进入到mysql的/bin目录。
执行myisamchk -r d:\mysql\data\discuz\*.MYI
其中d:\mysql\data\discuz\换成您的数据库所在路径。
如果是类Unix主机,直接使用myisamchk -r 数据库目录\*.MYI 即可。

其中我用第二种办法时,在phpmyadmin中显示此表正在使用中,phpmyadmin修复操作无法对此表进行修复操作。那就用第三种办法了,朋友服务器用的是win服务器主机,于是打开命令行,首先停止mysql服务:net stop mysql,然后进入到mysql的bin目录,输入:myisamchk -r d:\mysql\data\discuz\*.MYI,如果是能确认是哪个表,也可以把前面的*号直接换为具体的表名称,一般全部修复没问题。回车确定后,修复进程就在不断的一个表一个表,一行一行的修复中了。

修复过后,启动mysql数据库,net start mysql,然后到浏览器,打开论坛页面,试着浏览帖子,发贴等,已经全部正常,至此完全恢复OK。

经验就不多说了,在操作过程中中断是非常可怕的事,当然,关机断电更可怕。另外,更重要的一点就是在出问题以后,进行操作修复以前,一定要停掉mysql,然后直接到data目录中,备份好你的数据库,这很关键;一定要是停掉mysql以后备份。备份,是一个很好的习惯!呵!!

本文链接地址:http://www.linwan.net.cn/archives/2783.html
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理