読者です 読者をやめる 読者になる 読者になる

MySQL5.7にしたら今まで動いていたSQLがエラーになった #mysql

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

対策

本筋(ちゃんと対応する場合)

MySQLsql_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;

SQLsql_modeを書き換えることもできるようだが、どうもセッションの間だけしか維持されないようだ

SET sql_mode = '';