こ のサイトはwordpressをsqliteで運用しているが、前々からサーバーのエラーログにエラーメッセージが出るのが気になっていた。まあ動いてる からいいかと思っていたが、たまにトップページのリクエストに1回目だけ失敗しているのがこれのせいではないかと最近気が付いた(遅い)その2つめ
エラーログはこんな感じ。
1 |
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内で
1 2 3 4 5 6 |
$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で統合。
1 2 3 4 5 |
$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"; |
これで様子をみる。