LoginSignup
35
32

More than 5 years have passed since last update.

MySQL 5.7.8以降で古いアプリが動かない場合の対処(sql_mode)

Posted at

MySQL 5.7からはデフォルトの設定が色々変わっているので、5.6で動いていたアプリケーションが動かないケースがある。

主な理由はデフォルトのsql_modeの違い

  • 5.7からはデフォルトでONLY_FULL_GROUP_BYNO_ZERO_IN_DATEとかが設定されている。
  • ONLY_FULL_GROUP_BYが設定されていると、postgreSQLみたいにorder by句とgroup by句で同じカラムが指定されていないとエラーになる。
  • NO_ZERO_IN_DATEが設定されていると、careate_date = '0000-00-00 00:00:00'みたいなのでエラーになる。
  • 5.7系でもバージョンによって細かくデフォルトのsql_modeが違うので注意が必要。

詳しくは公式のドキュメントを参照

<= 5.7.4

NO_ENGINE_SUBSTITUTION

>= 5.7.8

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

解決策

my.cnfとかでsql_modeをNO_ENGINE_SUBSTITUTIONだけとかに設定する。

35
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
32