質問: **環境** ・MySQL5.7 **sql_mode** ・STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO --- **Q1.「STRICT_TRANS_TABLES」が有効な状態で、'0000-00-00'と'2017-10-00'を使用可にするためには?** ・「NO_ZERO_IN_DATE」「NO_ZERO」だけを無効にすれば良い? ・どうやって? --- **Q2.MySQL5.7では、NO_ZERO_DATEは関係ない?** ・公式ページで下記のように記載されていますが、どういう意味ですか? > > MySQL 5.7 では、このモードは何も行いません。その代わり、この効果は厳密モードの効果に含められています。 > > >
回答: 参照されたページは5.6の時点で書かれた予告でしかなく、実際の動作は5.7のドキュメントを参照すべきです。 5.1.8 Server SQL Modes、SQL Mode Changes in MySQL 5.7にそのものずばりの説明が挙げられています。 > > Desired Behavior | MySQL 5.7.x Versions Except 5.7.4 Through 5.7.7 | MySQL 5.7.4 Through 5.7.7 > > insert '0000-00-00', produce no warning | NO_ZERO_DATE not enabled | strict mode not enabled > > > というわけで、 * 5.7.4~5.7.7は厳密モードを有効にしないこと * それ以外は`NO_ZERO_DATE`を有効にしないこと だそうです。