首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL为什么告诉我“‘后置’的默认值无效”的原因是什么?

MySQL为什么告诉我“‘后置’的默认值无效”的原因是什么?
EN

Stack Overflow用户
提问于 2015-07-27 16:49:53
回答 1查看 2.7K关注 0票数 1

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

在通过phpMyAdmin导出5.7版本的数据库I并试图导入5.1版本之后,我得到了错误

MySQL说:文档#1067 -无效的‘后置日期’默认值

在命令下

代码语言:javascript
复制
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;

知道为什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-29 09:16:16

在5.1中,默认值必须是常量值(例如,NULL是可接受的),但允许current_timestamptimestamp类型除外。也就是说,对于某个日期或日期,您不能使用current_datenowcurrent_timestamp

所以,要么坚持postdate列的postdate类型,然后放弃current_timestamp作为默认值(您可以为此设置一个触发器,参见示例这里),或者--取决于您的需求--考虑使用timestamp (它有不同的值范围)。

手册的相应部分说:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31658836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档