浏览 2703 次 / [ 天下网闻 ] 修复common_syscache' is marked as crashed and last (automatic?) repair failed
  • 发布时间 2017-04-19 01:52
  • common_syscache WHERE.png

    一周前尝试合并用户主表与存档表,因默写原因放弃后,恢复数据库文件遇到很多问题,最终用DISCUZ后台功能备份到FTP里的数据库恢复成功。

    然而而后的几天,每次使用后台的优化数据库功能后,网站整个前后台都提示本错误:

    1. (144) Table './ddoorr/common_syscache' is marked as crashed and last (automatic?) repair failed
    2. SELECT * FROM common_syscache WHERE `cname` IN('setting','style_default','cronnextrun')
    复制代码
    因为出错时后台页面也无法打开,所以先后使用了tools工具和phpmyadmin的修复功能,均失败告终。
    不过期间发现在phpmyadmin里清空这个表,然后再到"<工具<更新缓存",以及到"界面<风格管理<更新CSS缓存"之后网站可以继续使用,如果再次使用优化数据库,那么又会遇到这个问题,出错时phpmyadmin中的pre_common_syscache显示使用中,无法修复。

    -----------------------------------------------------------------------------------
    今晚尝试过在SSH里用以下用命令修复的方法:

    1
    service mysqld stop


    先停止mysql服务;

    2
    cd /var/local/mysql/数据名
    表目录下(注意:不切换过来会总提示myisamchk一些错误导致失败);

    3
    myisamchk -r xxx.MYI

    (如果还是提示错误,就多加一个参数-f  强制进行。 myisamchk -r -f  xxx.MYI )


    使用本方法后又试着优化了两次数据库,没有出错,但是过了一会依然出现本例错误。于是又用本方法修复了两次。

    ------------------------------------------------------------------------------------

    以上方法似乎没能打到完全修复的目的,于是现在phpmyadmin备份表pre_common_syscache到本地,然后删除这个表,导入之前备份的正常数据库里的三兄弟:
    1. pre_common_syscache.MYI
    2. pre_common_syscache.MYD
    3. pre_common_syscache.frm
    复制代码
    然而刚尝试导入MYI就失败了(貌似直接从数据库文件夹里拷贝的不能导入phpmyadmin?)。

    极度郁闷之下又重新导入恢复了刚才备份的错误表,结果,完全不给人任何思想准备,一切正常了... ...

    ------------------------------------------------------------------------------------
    总结:也许是刚才用myisamchk已经修复成功了?现在已经不能确定了。总之灵活点,多折腾,同时切记即时多做各种备份。

    ------------------------------------------------------------------------------------


    接下来要做的是因为本例错误导致有两个插件丧失语言包文字的问题,修复方法比较简单,先分别备份导出两个插件对应的数据表及文件夹,卸载,重装插件,导入覆盖数据表,如果修改过界面等地方,再把备份的文件夹里主题css一类的文件覆盖回来。