'dateAdded'的默认值无效

Rob*_*eck 86 mysql sql

我遇到了一个SQL无法解决的愚蠢问题.

ALTER TABLE  `news` 
 ADD  `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT ,
 ADD PRIMARY KEY (  `dateAdded` )

错误:

(#1067)Invalid default value for 'dateAdded'
Run Code Online (Sandbox Code Playgroud)

有人能帮助我吗?

Mar*_*c B 131

CURRENT_TIMESTAMP只在TIMESTAMP字段上可以接受.DATETIME字段必须保留为空的默认值,或者根本没有默认值 - 默认值必须是常量值,而不是表达式的结果.

相关文档:http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

您可以通过在表上设置插入后触发器来解决此问题,以在任何新记录上填写"now"值.

  • 它看起来像mysql 5.6.5,你可以使用CURRENT_TIMESTAMP和DATETIME字段.请参阅http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html (68认同)
  • 谢谢 Frank,在尝试将导出的 db 从最新的 xampp 导入到较早的 xampp 时发现了这个问题。 (2认同)

Dav*_*san 46

CURRENT_TIMESTAMP是版本特定的,现在允许DATETIME从5.6版开始的列.

请参阅MySQL文档.

  • 你确定吗 ?我在5.7.x版本中遇到上述错误 (8认同)

Tor*_*erv 11

在MySQL 5.7.x上指定DATETIMEDATETIME(3)或类似时,请注意,您还必须为其添加相同的值CURRENT_TIMESTAMP(3).如果不是,它将继续抛出" 无效的默认值 ".

  • 这解决了我在 5.7.x 上的问题。我的日期时间字段被定义为 datetime(6) 并使用 CURRENT_TIMESTAMP(6) 解决了问题 (2认同)