我有两台运行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;
知道为什么吗?
答案 0 :(得分:1)
在5.1中,默认值必须是常量值(例如,NULL
是可接受的),但允许timestamp
的{{1}}类型除外。即,对于日期或日期时间,您无法使用current_timestamp
,current_date
或now
。
因此,您要么坚持使用current_timestamp
列的datetime
类型,而必须放弃postdate
作为默认值(您可以为此设置触发器,请参阅示例here),或 - 根据您的要求 - 考虑使用current_timestamp
(具有不同的值范围)。
manual的相应部分说:
除了一个例外,默认值必须是常量;它不可能是 函数或表达式。这意味着,例如,你不能 将日期列的默认值设置为函数的值 如NOW()或CURRENT_DATE。例外情况是您可以指定 CURRENT_TIMESTAMP作为TIMESTAMP列的默认值。