【问题标题】:In Laravel application, mysql import transforms timestamp null values to 0000-00-00 00:00:00在 Laravel 应用程序中,mysql import 将时间戳空值转换为 0000-00-00 00:00:00
【发布时间】:2017-03-13 13:42:56
【问题描述】:

在 Laravel 应用程序中,我有一个 MySQL 时间戳字段 deleted_at,它是为 softDeletes 创建的,默认值为 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 对我不起作用。我有很多表需要定期导入,所以我真的需要解决这个问题。请帮忙。

【问题讨论】:

  • 你是如何导入数据的?
  • 按照您提供的链接中的第二个答案。这可能会有所帮助。
  • 我使用从 phpMyAdmin 导入并选择了 csv 文件。

标签: php mysql laravel csv


【解决方案1】:

我认为您应该看到您的 config/database.php 文件。此文件包含您可以设置严格模式的变量 - 开/关。

Laravel 现在让你能够启用/禁用 mysql 模式。有了这个新特性,Laravel 现在可以做三件事:禁用“严格”模式,返回

你文件中的代码是这样的......

'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 以启用严格模式。 希望这可以帮助您解决问题。

【讨论】:

  • 在 database.php 中是:'strict' => false。
【解决方案2】:

您需要在 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

【讨论】:

  • 我正在使用 xampp(mysql 版本 15.1 Distrib 10.1.16-MariaDB)。我没有任何 my.cnf 文件。在 my.ini 文件中不存在 STRICT_TRANS_TABLES。我正在阅读mariadb.com/kb/en/mariadb/timestamp,但无法解决我的问题。
猜你喜欢
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 1970-01-01
  • 2019-03-26
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
相关资源
最近更新 更多