MySQL 5.6 で General error: 1364 Field ’{COLUMN_NAME}’ doesn’t have a default value エラーの対処
MySQL 5.5 から MySQL 5.6 への移行検証中に INSERT で以下のようなエラーが発生しました。
SQLSTATE[HY000]: General error: 1364 Field '{COLUMN_NAME}' doesn't have a default value
ググってみると同じ問題を Stack Overflow で発見。
結論からいうと MySQL 5.6 から MySQL のシステム変数である sql_mode
のデフォルト値が設定されるようになり、それによりエラーが発生していました。
早速システム変数 sql_mode
を SHOW VARIABLES
みてみると…、
mysql> SHOW VARIABLES LIKE 'sql_mode';
+---------------+--------------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------------+
| sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
1 row in set (0.00 sec)
STRICT_TRANS_TABLES
と NO_ENGINE_SUBSTITUTION
という値が入っている。
それぞれの値の説明は公式リファレンスに記載されていました。