博客评论挂掉3天后死而复生

2010.04.05 / 21:00

真是非常的荣幸,清明节假日前一天这个WordPress博客的评论不知原因的挂掉了,然后我并没有发现,昨天晚上我正在上网的时候收到夏影残雪的报错邮件,我才发现评论挂掉了。

  • WordPress无法(不能)提交评论:

    我以为是安装Ajax评论出了问题,把Ajax去掉以后仍然无法提评论,我在本地装上Ajax评论后却可以添加评论,所有出问题的不是Ajax评论。
    在后台添加回复也没有任何反应,注意到无法提交评论的表现是:点击提交按钮后跳到页面“http://www.digegg.com/wp-comments-post.php#comment-”就变成空白了,正常情况下提交评论的地址应该是“/wp-comments-post.php#comment-ID”到Google上搜了一下“wp-comments-post.php#comment-”,看到说是数据库出了问题,检查一下数据库果然发现了问题:

    #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘comment_agent’ at line 1

  • 解决WordPress无法评论的常见办法:

    看到有人给出的常见无法评论的解决办法如下:

    如果phpMyAdmin提示#1406 – Data too long for column ‘comment_agent’ at row 1

    这是由于comment_agent字段的数据太长造成的,解决办法是:把数据库里comment_agent字段的最大长度改大,如:512或1024。
    变相的解决办法是:

    打开/wp-includes/comment.php文件
    在“$data = compact(‘comment_post_ID’, ‘comment_author’ ,’comment_author_email’”之前添加如下代码:

    $comment_agent = ‘Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 ‘;

    这其实就是为评论的comment_agent字段指定一个固定的值。

  • 我的解决办法:

    遗憾的是上面的办法并没有解决我的问题,修复数据库之后问题仍然存在,为了节省时间拿来出问题前一天备份的数据登录phpMyAdmin还原,果然OK了,遗憾的是弄丢了一些评论,非常抱歉!
    提醒大家一定要定期做数据备份,预防不可预见的问题。

  • 后续:

    刚看到国外有个人给出的解决办法是重建wp_comments表:

    DROP TABLE IF EXISTS wp_comments;
    CREATE TABLE wp_comments (
    comment_ID bigint(20) unsigned NOT NULL auto_increment,
    comment_post_ID bigint(20) unsigned NOT NULL default ’0′,
    comment_author tinytext NOT NULL,
    comment_author_email varchar(100) NOT NULL default ”,
    comment_author_url varchar(200) NOT NULL default ”,
    comment_author_IP varchar(100) NOT NULL default ”,
    comment_date datetime NOT NULL default ’0000-00-00 00:00:00′,
    comment_date_gmt datetime NOT NULL default ’0000-00-00 00:00:00′,
    comment_content text NOT NULL,
    comment_karma int(11) NOT NULL default ’0′,
    comment_approved varchar(20) NOT NULL default ’1′,
    comment_agent varchar(255) NOT NULL default ”,
    comment_type varchar(20) NOT NULL default ”,
    comment_parent bigint(20)

    不知道这样能不能解决问题。

你懂的 不多说
  1. 棒棒糖
    2010.04.06 / 10:50

    现在应该好了吧?

  2. 2010.04.06 / 13:22

    @棒棒糖
    是的,昨天才好

  3. 2010.04.06 / 20:12

    我之前也挂了几天

  4. Yusn
    2010.04.06 / 20:42

    后来如何解决的呢?

  5. 2010.04.07 / 13:16

    能解决就好了 这个真的只要结果 哈哈