我有2台Windows服务器运行MySQL,其中一台运行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;知道为什么吗?
发布于 2015-07-29 09:16:16
在5.1中,默认值必须是常量值(例如,NULL是可接受的),但允许current_timestamp的timestamp类型除外。也就是说,对于某个日期或日期,您不能使用current_date、now或current_timestamp。
所以,要么坚持postdate列的postdate类型,然后放弃current_timestamp作为默认值(您可以为此设置一个触发器,参见示例这里),或者--取决于您的需求--考虑使用timestamp (它有不同的值范围)。
手册的相应部分说:
除了一个例外,默认值必须是一个常量;它不能是一个函数或表达式。例如,这意味着不能将date列的默认值设置为像NOW()或CURRENT_DATE这样的函数的值。例外情况是,您可以指定CURRENT_TIMESTAMP作为时间戳列的缺省值。
https://stackoverflow.com/questions/31658836
复制相似问题