泪奔啊~~~啊啊啊啊啊啊~~~ 泪奔~~~ 感谢上帝让我认识了Fwolf兄~ 简直就像我的教科书和帮助文档一样... 如果没有Fwolf兄, 我想这个问题还会困扰我不知多久... 一千万分的感激献上~!!!

是什么问题呢? 我想, 肯定会有人, 对, 绝对会有人和我遇到相同问题的... 我肯定这个问题绝对会再次降临在其他不幸的WordPress使用者身上...

问题的出现, 要追溯到前不久我曾经尝试安装的一个WordPress插件, 这个插件可以使文章的评论者使用他们BLOG的favicon图标作为他们的头像出现在评论中. 或许你正使用这个插件, 如果你没有出现这个问题, 那希望你以后不要遇到, 不过当你遇到这个问题时, 可以参考我这篇文章. 我曾安装并激活了此插件, 但似乎并不太理想, 所以我删掉了这个插件, 但我没有注意到... 这是问题已经出现了...

问题的具体表现为, WordPress的大部分功能都正常, 可以修改设置, 发布新日志等等... 但是当发表评论, 并点击投递评论按钮后, 页面就会始终出于加载状态... 一直无法投递成功(更准确的说是无法通过WP程序向MySQL的[表明前缀]comments表写入数据了)...

昨天上午严严姐发现我BLOG出现了这个现象, 并告诉了我, 开始我以为是网络或者什么其他原因... 但后来发现事情不是那么简单... 之后又有严严姐的朋友RIC, 以及StrmNos, 等朋友帮忙分析过问题, RIC认为是模板源代码的问题, 而我的问题排除操作告诉我, 可能是MySQ数据库的问题. 后来又在MySQL上又做了问题排除操作, 最终把问题的根源定位到了WordPress所用数据库的[表明前缀]comments这个表上... 但我对MySQL可以说完全不懂... 搜索又找不到任何相关的文章... 我无法在深入研究问题所在了... 于是给Fwolf兄写了信求救... 以下是与Fwolf兄关于解决这个问题的整个邮件会话:

第一封邮件:

from 戴耳钉的猫
to Fwolf
date Mar 9, 2008 4:10 AM
subject 关于MYSQL的问题请教大侠...

为了定位这个问题所在, 让我整整痛苦了一下午...

问题大概是这样子...

现象是在WP的评论上, 当对文章发布评论后, 点击评论按钮递交的时候, 页面就会一直加载没有任何反应...
而其他一些操作都正常, 比如发布新日志, 修改WP的各项设置等等...

最开始我更换了WP默认的模板, 问题依旧.
接着使用WP默认模板, 并禁用了所有插件, 问题依旧.
基本排除了是因为页面源代码导致的问题.

接着, 我试了一下服务器上的其他WP, 没有问题. 于是我整个BLOG重新安装了一遍.

重新安装的纯净WP, 评论没问题, 一切正常, 接着, 导入了之前备份的数据库.
结果问题依旧. 立刻又无法评论了.

暴走...

对数据表进行了分别导出, 每个表导出一份...

又一次重新安装WP... 从POST表开始导入, 导入后没问题.
接着导入其他表...
直到导入comments表时... 问题出现了...
经过多次测试, 发现只要不导入comments表, 就啥事儿没有, 一导入, 立马无法评论...

我相信问题就出在这个comments表上...
难道是评论过多? 地方不够用了?? 不可能吧...
但还是试了试, 于是删掉了几条评论记录... 问题依旧...
干脆清空这个表... MD... 问题还是依旧...

崩溃....

直到现在, 虽然问题我自认为已经找到出处了, 但还是没能解决...
而且我发现一个现象, 就是如果我删掉那个我BLOG故障的comments表, 然后导入一个其他BLOG的comments表, 貌似可以评论...
唯独导入我那个comments表就不行... 真见鬼...

想请Fwolf大侠帮我分析一下...
因为我对mysql不熟悉... 所以有几个疑惑的地方.
第一, 自然是我分析的问题出处是否正确... (因为有人跟我说MYSQL不可能出现这种错误)...
第二, 如果问题确实有可能是那个comments表, 那么为什么会出现这种情况呢.. 而post表的数据命名比comments还多, 而且我看这两个表的类型也是一样, 但我发布新日志就没问题... 是comments表损坏? 或者说还有什么其他情况可能会造成这个现象...

真是让我摸不着头脑... 如果说因为我当初安装mysql的时候没配置好... 但服务器上其他使用mysql的程序都正常, 甚至是其他WP都没问题... 唯独我的这个评论表...

不知道我描述的是否清楚...
请大侠有空的时候帮我分析一下... 多谢~多谢~! :)
真是让我奇怪啊...

第二封邮件:
From: Fwolf
To: 戴耳钉的猫
Date: Sun, 9 Mar 2008 15:57:19 +0800
Subject: Re: 关于MYSQL的问题请教大侠...

你分析的过程和描述都很详细,我想我应该是看懂了,很有用的信息,方法也挺好。
根据你的情况,我觉得应该是comments表的结构有一些问题,mysql默认导入导出
是带结构的导出,也就是导入的时候会删除原表,新建表再insert数据,这也解释
了为何导入其它wp的comments备份没事、删除comments表数据也无效。

所以,对比一下好坏comments表的结构,应该有变化,或者是安装过什么插件更改
了它。至于进一步的错误原因,可能就要参照php的errorlog来看了。

查mysql 表结构可以用phpmyadmin,或者在mysql>下:
show columns from wp_comments;

第三封邮件:
From: 戴耳钉的猫
To: Fwolf
Date: Sun, 9 Mar 2008 16:30:01 +0800
Subject: Re: 关于MYSQL的问题请教大侠...

不胜感激大侠帮我做的分析...!!
我对比了一下COMMENTS表, 取的是一个健康的WP中的表进行的对比.
然后我发现我的表有以下特点(针对与健康COMMENTS表多出的东西);

首先在字段上, 比健康COMMENTS表多了以下三个:
comment_subscribe (我安装了邮件订阅评论通知插件 Subscribe To Comments )
comment_favicon_url (曾经安装过用留言者BLOG的favicon图标做头像的插件, 但后来删掉了)
comment_reply_ID (安装了回复评论用的插件, 但我曾经尝试过两个插件, 不知道会是那个所用的. 而目前正在用的是 WordpressThread Comment )

然后是在索引上多了一个键名:
comment_date_gmt 类型为INDEX

因为两个BLOG的留言数目不同, 其他的都是一些数值上的差异了. 附上两张对比截图.

如果表结构的不同可能会导致无法评论, 那现在看来问题已经细化很多很多了...
我只要先备份好COMMENTS表的数据, 然后逐个删去我发现那四处与健康表相比多余的部分, 应该就能找到问题的关键所在,
以及是因为哪个插件造成此问题的了吧?

按照Fwolf兄给出的分析结果, 在看过Fwolf的回信不到10分钟后, 问题完美解决. 原因就是出在信中提到的那个comment_favicon_url字段. 将这个字段删除后, 就恢复正常评论了... 呼...

如果你的WordPress在删除了那Favatars插件后遇到了相同的问题, 不妨参考一下此文... 有可能也是你的问题所在...

最后, 要特别感谢Fwolf, RIC, StrmNos, 以及所有在这个问题上帮助我分析及给与我帮助的朋友们!!! 万二分的谢谢你们!!

------ by: 正在膜拜Fwolf的 戴耳钉的猫



Orignal From: 因MySQL数据库导致WP无法评论的问题

文章发布于 17:48 . 评论RSS 订阅: 博文评论 (Atom) .

0 评论

发表评论