MySQL5.6へ移行した際に以下のエラーが発生。
エラー
SQLSTATE[HY000]: General error: 1364 Field 'hogehoge' doesn't have a default value
ググると、このエラーはデフォルト値がないカラムに、値なしでinsertしていることを怒っているらしく、mysql5.6からsql_modeのデフォルト値がSTRICT_TRANS_TABLESになったことが原因らしい。
###STRICT_TRANS_TABLESを外す方法
sqlを直すのは手間なので、設定を変更することに。
/etc/my.cnfを変更してmysql再起動しても反映されず、いろいろ調べたら/usr/my.cnfの設定が使われていた。
複数設定ファイルがある場合は後勝ちになるらしい。ちなみに、環境はCentOS7。
/usr/my.cnfを以下のように修正して再起動したら反映された。
my.cnfの修正箇所
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
↓
sql_mode=''
mysql再起動
service mysqld restart
mysqlから設定の確認。
設定確認
mysql> SHOW VARIABLES LIKE 'sql_mode';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sql_mode | |
+---------------+-------+
参考
MySQL 5.6 で General error: 1364 Field ‘{COLUMN_NAME}’ doesn’t have a default value エラーの対処
MySQL5.6にしていくつかのSQLでエラーが出るようになった