MySQL group byでエラー

MySQLのバージョンを5.1.39から5.7.9にあげたら今まで動作していたSQLがエラーになった。

ログを確認すると以下のエラーが出力されていた。

DB EXECUTE ERR 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column '項目名' 
which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 

group by した項目以外はselectできないよというエラー。

もちろんそれは正しいが、今まで動作していたSQLは引き続き動作してほしい。

MySQLは5.7からsql_modeにonly_full_group_byが設定されているようだ。

念のためにsql_modeに何が設定されているかを確認。

■バージョン5.1.39の場合
mysql> show variables like ‘sql_mode%’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| sql_mode | |
+—————+——-+
1 row in set (0.00 sec)

■バージョン5.7.9の場合
mysql> show variables like ‘sql_mode%’;
+—————+——————————————————————————————————————————————-+
| Variable_name | Value |
+—————+——————————————————————————————————————————————-+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+—————+——————————————————————————————————————————————-+
1 row in set (0.00 sec)

my.cnfに以下の記述を追加する。

sql_mode=''

以上でエラーは回避できる