MySQL5.7にしたら今まで動いていたSQLがエラーになった #mysql
原因
デフォルトのSQLモードが違うための模様
http://qiita.com/nagi244/items/04747f8e4ec351b22311
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
対策
本筋(ちゃんと対応する場合)
MySQLはsql_modeを指定しないとかなり寛容・ゆるふわ・いい加減。。
なので、本筋で言えば下記の対応を行うべきである
場当たり(とりあえず動かしたい場合)
設定ファイルを書き換える
Macだと↓あたりにテンプレがある
/usr/local/Cellar/mysql/5.7.11/support-files/my-default.cnf
mysqlが読み込んでくれる場所に置く
cp my-default.cnf /etc/mysql/my.cnf
sqlモードを書き換える(qiitaの記事を信じるならonly_full_group_byだけ無効にすればいいのかも)
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
再起動する
mysql.server restart
補足
SQLモードの確認
SELECT @@sql_mode;
SQLでsql_modeを書き換えることもできるようだが、どうもセッションの間だけしか維持されないようだ
SET sql_mode = '';