14
11

More than 5 years have passed since last update.

LaravelでMySQLへのデータ挿入時にエラーが出た場合の対処法

Posted at

はじめに

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.phpstrictの値をfalseに設定する。

database.php
'mysql' => [
    // 略
    // 'strict' => true,
    'strict' => false,
    // 略
],

原因

stricttrueになっていると、次のように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_modeSTRICT_TRANS_TABLESが設定されていると、無効な値が挿入された場合にエラーを出すようになる。

参考

14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11