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=''
以上でエラーは回避できる