Spam Karma 2 with MySQL 5

雖然目前這個blog的曝光率應該是超級低,還是想防患於未然。聽朋友的建議裝了Spam Karma 2,雖然好像會動作,但是要進入Recent Spam Harvest和Approved Comments的時候,都會出現以下的錯誤訊息,然後無法動作:


Can’t fetch comments.
Query: SELECT `posts_table`.`post_title`, `spam_table`.`karma`, `spam_table`.`id` as `spam_id`,`spam_table`.`karma_cmts`, `comments_table`.* FROM `wp_comments` AS `comments_table`, `wp_posts` AS `posts_table` LEFT JOIN `wp_sk2_spams` AS `spam_table` ON `spam_table`.`comment_ID` = `comments_table`.`comment_ID` WHERE `comment_approved` != ‘1′ AND `posts_table`.`ID` = `comments_table`.`comment_post_ID` ORDER BY `comments_table`.`comment_date_gmt` DESC LIMIT 30
SQL error: Unknown column ‘comments_table.comment_ID’ in ‘on clause’


完全搞不懂是怎麼回事。丟上google有發現到一個德文blog在講這件事,可是完全看不懂,就這樣放了一天。

後來用google翻成英文,大意是說MySQL 5.0.12之後,採SQL:2003的新語法--好吧,對我這個完全不懂SQL的人講這個和鴨子聽雷還是一樣,懂的人大概一下就看懂吧。

總之後來把這行FROM後面的item加了括號(spam_karma_2_plugin.php line#500)

$query = "SELECT `posts_table`.`post_title`, `spam_table`.`karma`, `spam_table`.`id` as `spam_id`,`spam_table`.`karma_cmts`, `comments_table`.* FROM `". $wpdb->comments . "` AS `comments_table`, `" . $wpdb->posts ."` AS `posts_table` LEFT JOIN `". sk2_kSpamTable . "` AS `spam_table` ON `spam_table`.`comment_ID` = `comments_table`.`comment_ID` WHERE $query_where AND `posts_table`.`ID` = `comments_table`.`comment_post_ID` ORDER BY `comments_table`.`comment_date_gmt` DESC LIMIT $query_limit";


變成以下這樣
$query = "SELECT `posts_table`.`post_title`, `spam_table`.`karma`, `spam_table`.`id` as `spam_id`,`spam_table`.`karma_cmts`, `comments_table`.* FROM (`". $wpdb->comments . "` AS `comments_table`, `" . $wpdb->posts ."` AS `posts_table`) LEFT JOIN `". sk2_kSpamTable . "` AS `spam_table` ON `spam_table`.`comment_ID` = `comments_table`.`comment_ID` WHERE $query_where AND `posts_table`.`ID` = `comments_table`.`comment_post_ID` ORDER BY `comments_table`.`comment_date_gmt` DESC LIMIT $query_limit";

就ok了...和修好get recent comments一樣不知道在爽什麼XD

留言

  1. [...] Wer Spam Karma 2 auf Wordpress benutzt und als Backend eine MySQL 5 hat, hat ein Problem: die neue DB mag ein Statement, das SK2 benutzt, nicht. Nach langer Suche zusammen mit dem Autor des Plugins, habe ich herausgefunden, da

    回覆刪除
  2. 搞了十幾個小時的 LEFT JOIN,是您這篇救了小弟!

    回覆刪除

張貼留言

這個網誌中的熱門文章

為什麼男生唱女生的歌要升 key

台灣工程師常唸錯的英文單字

談談台灣人使用統傳漢字的優越心態