В приложении Laravel mysql import преобразует значения timestamp null в 0000-00-00 00:00:00

В приложении Laravel у меня есть поле timestamp MySQL deleted_at, которое было создано для softDeletes, а значение по умолчанию – NULL. Если значение не равно NULL, Eloquent не будет извлекать данные. Когда я импортирую CSV-файл, значение NULL из исходного файла становится 0000-00-00 00:00:00.

Я прочитал Mysql import transforms timestamp null values ​​до 0000-00-00 00:00:00, а \ N не работал для меня. У меня много таблиц, которые мне нужно периодически импортировать, поэтому мне действительно нужно это исправить. Пожалуйста помоги.

Вам нужно отключить строгий режим в MySQL. В частности, имя режима – STRICT_TRANS_TABLES. Откройте /etc/mysql/my.cnf (или тот же файл в Windows) найдите и закомментируйте STRICT_TRANS_TABLES .

Больше информации здесь:

http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-strict

Я думаю, вы должны увидеть свой файл config / database.php . Этот файл содержит переменную, из которой вы можете установить строгий режим – Вкл. / Выкл.

Laravel теперь дает вам возможность включать / отключать режимы mysql. Благодаря этой новой функции Laravel теперь имеет возможность делать три вещи: отключить «строгий» режим, возвращаясь к поведению <= 5.6; включить «строгий» режим, установив его на поведение 5.7; или настраивать, какие именно режимы включены.

Код в вашем файле выглядит следующим образом …

 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => true, // <----- This variable sets the strict mode. 'engine' => null, ], 

установите для этого значения значение false, если вы хотите отключить строгий режим, иначе установите true, чтобы включить строгий режим. Надеюсь, это поможет вам решить вашу проблему.