导入SQL数据库datetime的默认值无效

时间:2016-06-23 22:15:34

标签: mysql datetime

我正在将数据库从一个MySQL服务器移动到另一个MySQL服务器,但是在导入一个表时我最终得到了错误:

  

1067 - ' date'

的默认值无效

表SQL:

CREATE TABLE IF NOT EXISTS `log` (
  `id` int(11) NOT NULL,
  `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `url` text NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=165 DEFAULT CHARSET=utf8

从5.6.21

导入MySQL版本5.5.47

2 个答案:

答案 0 :(得分:2)

在MySQL 5.5中,当列数据类型为DEFAULT CURRENT_TIMESTAMP而不是TIMESTAMP时,您只能使用DATETIME

asset-path说:

  

例外情况是您可以指定CURRENT_TIMESTAMP作为TIMESTAMP列的默认值。

在5.6中,他们将其扩展为DATETIME,其MySQL 5.5 documentation说:

  

例外情况是您可以指定CURRENT_TIMESTAMP作为TIMESTAMPDATETIME列的默认值。

因此,要么更改数据类型,要么删除默认值。

您应该始终警惕迁移到任何软件的旧版本,因为您的代码通常可能使用之前不存在的新功能。更新版本通常提供向后兼容性(至少对于少数版本而言),但旧版本无法处理新版本中未实现的功能。

答案 1 :(得分:-1)

CURRENT_TIMESTAMP仅在TIMESTAMP字段上可以接受。 DATETIME字段必须保留为空的默认值,或者根本没有默认值。