【问题标题】:MYSQL TIMESTAMP error code 1292 when loading table from file从文件加载表时 MYSQL TIMESTAMP 错误代码 1292
【发布时间】:2018-02-09 20:42:06
【问题描述】:

我有一个包含“date_created”列的表,我尝试将类型作为 DATETIME 和 TIMESTAMP。

我将此文件的默认设置为 CURRENT_TIMESTAMP

我有一个 cvs 文件,我想将数据加载到表中,其中 date_created 列的值为空白。

当我将文件加载到表中时,我收到错误代码 1292 Incorrect Datetime Value

【问题讨论】:

  • @Barmar 他不重视该列,因此最好完全忽略它。
  • @Barmar 他说 date_created 的值是空白的。
  • 错过了,抱歉

标签: mysql


【解决方案1】:

如果您有办法即时计算目标表的所有列,则不需要在 CSV 中包含所有列,否则 MySQL 会通过 DEFAULT 为您完成。

因此,解决此问题的一种方法是从 CSV 文件中完全删除 date_created 列,并在 LOAD DATA 过程中自动生成 DEFAULT。正如您所指出的,无论如何您都没有此列的值,并且该列将默认为 CURRENT_TIMESTAMP,因此这似乎是一种合理的方法。

假设一张桌子:

CREATE TABLE `test` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `a` VARCHAR(32) DEFAULT NULL,
  `b` VARCHAR(32) DEFAULT NULL,
  `date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
);

因此,您的 CSV 将仅包含列 ab 的值,而您的 LOAD DATA 语句将类似于

LOAD DATA INFILE  "yourfilename" INTO TABLE `test` FIELDS TERMINATED BY ',' (a,b);

或者,如果你想明确一点:

LOAD DATA INFILE  "yourfilename" INTO TABLE `test` FIELDS TERMINATED BY ',' (a,b) SET id = NULL, date_created = NOW();

【讨论】:

  • 不客气。如果您接受答案,您可以关闭问题。
猜你喜欢
  • 2013-08-18
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
相关资源
最近更新 更多