Edited at

MySQL5.7.9でGROUP BYがエラーになった件

More than 3 years have passed since last update.


■エラー内容

MySQL5.6ではエラーにならなかった以下のSQLが...

SELECT a.name, b.name

FROM a LEFT JOIN b ON a.id = b.id
GROUP BY a.id

MySQL5.7.9では以下のエラーとなりました。

Expression #n of SELECT list is not in GROUP BY 

clause and contains nonaggregated column 'dbname.b.name'
which is not functionally dependent on columns in GROUP BY clause;
this is incompatible with sql_mode=only_full_group_by


■原因

そもそもこのSQLは誤っているのでエラーになるのが正しいようですが、

MySQL5.6では「only_full_group_by」が無効になっているらしくエラーになりませんでした。

MySQL5.7.9ではデフォルトで有効になっているようなので、エラーになったようです。


■許容するには

「only_full_group_by」を無効にすればOKそうです。

が、誤っているSQLもエラーにならないという罠に陥るので、

迂闊に無効にするのは危ない気がします。

設定大事。(今まで書いたSQL大丈夫か心配になってきました...)