SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column …

Posted by muchag | MySQL | 2018-05-19 (土) 19:09:04

【環境】
MySQL: 5.7.18
経緯

GROUP BY を用いたら、下記エラーが出た。

Error: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘dbnam.tablename.columnname’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
原因

Google 先生に質問すると、一杯出てきた。。。
MySQL 5.7 から仕様変更になったのが原因だそうな。

sql_mode=only_full_group_by
この部分。

my.cnf のデフォルトで sql_mode に only_full_group_by が追加されたため
GROUP BY を用いたときは、一意である値しか SELECT できなくなったとのこと。

解決策1

my.cnf の sql_mode から only_full_group_by を外してしまえば、5.6 までと同じように動作するとのこと。

解決策2
  • GROUP BY で指定したカラム
  • 集約関数を利用しているカラム
  • 全て同値であるカラム(?)

これらについては、SELECT できるので
それだけを指定する。

参考サイト

Qiita:脱!ゆるふわMySQL(2015-12-16)

MySQL | 2018-05-19 (土) 19:09:04 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment