
こ のサイトはwordpressをsqliteで運用しているが、前々からサーバーのエラーログにエラーメッセージが出るのが気になっていた。まあ動いてる からいいかと思っていたが、たまにトップページのリクエストに1回目だけ失敗しているのがこれのせいではないかと最近気が付いた(遅い)その2つめ
エラーログはこんな感じ。
Error message was: Problem preparing the PDO SQL Statement. Error was a GROUP BY clause is required before HAVING
どうもsql構文で"HAVINGの前にはGROUP BYがいるで"と出ているようだ。該当行は/wp-admin/includes/template.php内で
$sql = "SELECT DISTINCT meta_key
FROM $wpdb->postmeta
WHERE meta_key NOT BETWEEN '_' AND '_z'
HAVING meta_key NOT LIKE %s
ORDER BY meta_key
LIMIT %d";
ってな感じ。たしかにGROUPがないのにHAVINGは意味ないと思い、WHEREで統合。
$sql = "SELECT DISTINCT meta_key
FROM $wpdb->postmeta
WHERE (meta_key NOT BETWEEN '_' AND '_z') AND (meta_key NOT LIKE %s)
ORDER BY meta_key
LIMIT %d";
これで様子をみる。