はじめに
LaravelのSeederでテストデータを入力しようとした際に、次のエラーが発生した。
SQLSTATE[HY000]: General error: 1364 Field 'カラム名' doesn't have a default value
NOT NULLであるフィールドにNULLをInsertした事によりエラーが出たようだ。
今回はこの警告を無効化することで対処する。
環境
- Laravel 5.5.45
- MySQL 5.7.26
対処法
config/database.php
のstrict
の値をfalse
に設定する。
database.php
'mysql' => [
// 略
// 'strict' => true,
'strict' => false,
// 略
],
原因
strict
がtrue
になっていると、次のようにsql_mode
が設定される。
mysql> select @@GLOBAL.sql_mode;
+---------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode |
+---------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+---------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
sql_mode
にSTRICT_TRANS_TABLES
が設定されていると、無効な値が挿入された場合にエラーを出すようになる。