MySQLのフィールドにDefaultが設定されていない場合のエラー
サーバー移行が終わって、さてちょっと検証するか、と思ったら以下のエラーが。。
SQLSTATE[HY000]: General error: 1364 Field **** doesn't have a default value
****にはフィールド名が入っています。
どうやら、データベースに登録しようとしたけれど、****のフィールドに何も入れてないからエラーになったよ、ということらしいです。
しかしおかしなことに、移行前のサーバーでは起きなかったんですよね。。
と思って調べたら、
MySQLのバージョンによって動作が変わったみたいです。
旧サーバーは以下
# mysql --version
mysql Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1
まあ正確にはMariaDBですが。。
新サーバーは以下
# mysql --version
mysql Ver 14.14 Distrib 5.7.28, for Linux (x86_64) using EditLine wrapper
MySQL5.5→5.7に変更したことによって起きたエラーなのです。
解決方法
my.cnfに設定を追加
# vi /etc/my.cnf
my.cnfの一番下に以下の設定を追加します。
sql_mode=NO_ENGINE_SUBSTITUTION
MySQL再起動
sudo service mysqld restart