MySQL告诉我的原因是什么"' postdate'""?

时间:2015-07-27 16:49:53

标签: mysql

我有两台运行MySQL的Windows服务器,其中一台运行版本5.1,另一台运行版本5.7。我正在尝试将数据库从MySQL 5.7复制到另一台服务器上的5.1,并且相信它的版本差异(5.7中的新语法?)导致了这个错误,但我可能错了。

通过phpMyAdmin导出5.7版本中的数据库I并尝试在5.1版本中导入我收到错误

  

MySQL说:文档#1067 - 默认值无效   '踵'

命令

CREATE TABLE IF NOT EXISTS `jobs` (

 `id` mediumint( 9 ) NOT NULL ,
 `title` varchar( 200 ) DEFAULT NULL ,
 `descr` varchar( 5000 ) DEFAULT NULL ,
 `postdate` datetime DEFAULT CURRENT_TIMESTAMP 
) ENGINE = InnoDB AUTO_INCREMENT =5 DEFAULT CHARSET = utf8mb4;

知道为什么吗?

1 个答案:

答案 0 :(得分:1)

在5.1中,默认值必须是常量值(例如,NULL是可接受的),但允许timestamp的{​​{1}}类型除外。即,对于日期或日期时间,您无法使用current_timestampcurrent_datenow

因此,您要么坚持使用current_timestamp列的datetime类型,而必须放弃postdate作为默认值(您可以为此设置触发器,请参阅示例here),或 - 根据您的要求 - 考虑使用current_timestamp(具有不同的值范围)。

manual的相应部分说:

  

除了一个例外,默认值必须是常量;它不可能是   函数或表达式。这意味着,例如,你不能   将日期列的默认值设置为函数的值   如NOW()或CURRENT_DATE。例外情况是您可以指定   CURRENT_TIMESTAMP作为TIMESTAMP列的默认值。