MySQL 5.7からはデフォルトの設定が色々変わっているので、5.6で動いていたアプリケーションが動かないケースがある。
主な理由はデフォルトのsql_modeの違い
- 5.7からはデフォルトで
ONLY_FULL_GROUP_BYやNO_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だけとかに設定する。