baserproject / basercms

baserCMS : Based Website Development Project
http://basercms.net
Other
173 stars 130 forks source link

MySQL5.7以降で、DISTINCTとORDER BYのセットでエラーになる #1642

Open shun-ue opened 3 years ago

shun-ue commented 3 years ago

概要

MySQL5.7の環境にてBlogHelper::getCategories() を使用すると内部エラーが発生します。 原因が、MySQL5.7でのDISTINCTとORDER BYのセット使用のようです。

参考記事: https://blog.prophet.jp/2951/ https://qiita.com/ysk_n/items/b8149c5813a2fde5d8c5

MySQL 5.7.5 から、デフォルトの sql_mode に ONLY_FULL_GROUP_BYが設定されており、 「GROUP BY で集計するとき、SELECT 句や ORDER BY 句で指定するカラムが GROUP BY 句に含まれているか」と「ORDER BY 句のカラムが DISTINCT のカラムリストに含まれているか」をチェックし、違反している場合はエラーとなるようです。

yama commented 3 years ago

@cu-morishita

getCategories()のパラメータにidやparentなどを設定して試してみましたが、 再現しませんでした。実際にはどのように書いてますか?

kaburk commented 3 years ago

@cu-morishita ONLY_FULL_GROUP_BYを設定して試してみた(baserCMS 4.4.8)のですが、やはり発生しないみたいですね、、、 発生時の追加の情報(引数とか利用しているページとか)がなにか情報いただけませんでしょうかー?

スクリーンショット 2021-07-08 12 52 50 スクリーンショット 2021-07-08 12 49 05 スクリーンショット 2021-07-08 12 49 17

コミットログを見たけど、特に改修された箇所なども見当たらない感じです、、、