MySQLのバージョンを5.7にあげたら動かなくなった
MySQL8がリリースされているものの、まだまだMySQL5系をご利用されている場合は多いかと思います。今回はphpのアプリで利用しているMySQLのバージョンを5.6→5.7に入れ替えたときに急にアプリが動かなくなりました。
原因:sql_modeの設定
原因はMySQLの設定項目であるsql_modeでした。旧環境(5.6)と新環境(5.7)で
この設定が異なっていたため、SQLエラーが頻発していました。
(sql_modeの解説は他に詳しく書いている方が多くいると思うので省略します。)
コマンド実行で変更可能ですが運用的には/etc/my.cnf
に
[mysqld]
...
sql_mode=NO_AUTO_VALUE_ON_ZERO,STRICT_ALL_TABLES
みたいに明示的に指定して固定しておいたほうが間違いないかと。
sql_modeのデフォルト設定は5.7以降よく変わっているようです。(参考)