BETA

MySQLの5.6から5.7への変更は設定に注意

投稿日:2019-07-05
最終更新:2019-07-05

止むに止まれず、手元のDBをver.5.6から5.7にしたのだけれど、甘くみていたのでその後の動作に問題が発生。

エラーはこちら

#1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'テーブル名.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

なんぞやと思っていたら、5.7でのsql_modeのデフォルト設定の問題だったのですね。
ということで、何が変わったかを比較

mysql> SELECT @@sql_mode;  

従来のの5.6では、NO_ENGINE_SUBSTITUTIONだけだったのですが、5.7ではあれこれついて、その中にONLY_FULL_GROUP_BYありました。

ONLY_FULL_GROUP_BY

GROUP BY 句で名前が指定されていない非集約カラムを、選択リスト、HAVING 条件、または (MySQL 5.6.5 以降で) ORDER リストが参照するクエリーを拒否します。

状況としてはまさにその通りでした。
ただ、これにしたがってSQLが直していられるような状況ではないので、設定変更をしました。
ちなみにCloudSQLの環境でやったのだが、あいにく設定方法は忘れてしまった!

参考文献

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

Tech memos

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう