最近本博客出现严重问题:所有评论丢失、发表新评论报 404 错,且浏览器导航到类似 *comment-page-#comment- 的网址。
Google、百度了一大通,基本在说 .htaccess 权限问题、评论设置问题、插件问题、WordPress 自身升级产生的问题。
因为本站自稳定运行后,基本就没改动过设置、也不喜欢装插件、WordPress 版本也没升级(怕出问题)、MySQL 库也没动过,所以,上述原因都不靠谱。
既然偷懒不成功,那就必须动脑筋了:
1、文章能正常显示 + 评论丢失 => WordPress CMS 正常、database 正常,评论 table 异常。
2、登录 phpMyAdmin,进入对应 database,果然,评论表 wp_comments 状态为 in use,异常。
3、印象中 MySQL 库、表是可以修复的,在 phpMyAdmin 中找了一下,没有该选项。
4、猜吧,修复是 repair,于是在 SQL tab page 输入 REPAIR,果然,该词变成了紫色(keyword),然后继续输入 wp_comments,执行“REPAIR wp_comments”,提示语法错。
5、也不 Google 了,再猜,repair 什么呢?对,是表,于是输入“REPAIR TABLE wp_comments”,good job, it works!
现在,以前的评论回来了,也能正常发表新评论,大功告成!
————————————
究其原因,猜测是太久没清里 spam 评论(一天大约 300 条左右),数据太多,表锁了或炸了,因为以前时不时想起这事就会清理一下,3 年来没遇到过这样的问题。
所以,为了避免这样的问题再次出现,要么关闭评论功能、要么装个好插件让垃圾评论根本进不来(博主不喜欢装插件,用的是 keywords 过滤方式,比如带 http:、https:、日语的(の)的内容全部进 spam folder)、要么定期清理 spam 类评论。
————————————
继续延伸:当你啥都没改动过(库、文件、WP 版本、插件等),但是,丢失了某些内容(如文章、页面、评论、分类、tags 等),进 phpMyAdmin 看看吧!你会找到原因的:最终的修复操作可在一分钟内完成——REPAIR TABLE wp_*!也不要动不动就怀疑是被黑客攻击了,如果你博客/网站日 IP 没有 5 万以上,根本不需要自作多情,谁有功夫黑你啊,还不如看会片。