在Laravel应用程序中,我有一个为softDeletes创建的MySQL时间戳字段 deleted_at ,默认值为NULL。如果该值不为NULL,则Eloquent将不会检索数据。当我导入CSV文件时,源文件中的NULL值变为0000-00-00 00:00:00。
我看了Mysql import transforms timestamp null values to 0000-00-00 00:00:00并且\ N对我不起作用。我有很多表需要定期导入,所以我真的需要解决这个问题。请帮忙。
答案 0 :(得分:0)
您需要在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
答案 1 :(得分:0)
我认为您应该看到 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以启用严格模式。 希望这可以帮助您解决问题。