'dateAdded'的默认值无效

时间:2012-01-25 15:58:33

标签: 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'

有人能帮助我吗?

8 个答案:

答案 0 :(得分:127)

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

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

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

答案 1 :(得分:45)

CURRENT_TIMESTAMP是特定于版本的,自版本5.6起现在允许DATETIME列。

请参阅MySQL docs

答案 2 :(得分:11)

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

答案 3 :(得分:0)

我的LEMP和CURRENT_TIMESTAMP上有mysql版本5.6.27,默认值正常。

答案 4 :(得分:0)

mysql版本5.5设置datetime默认值为CURRENT_TIMESTAMP将报告错误 您可以更新到5.6版,它将datetime默认值设置为CURRENT_TIMESTAMP

答案 5 :(得分:0)

将类型从日期时间更改为时间戳,它将起作用! 我对mysql 5.5.56-MariaDB - MariaDB Server也有同样的问题 希望它可以帮助...对不起,如果被删除

答案 6 :(得分:0)

我有同样的问题, 以下修复解决了我的问题。

  • 选择键入' TIMESTAMP'

  • 不要在任何长度/值范围内输入任何内容。保持空白

  • 选择CURRENT_TIMESTAMP作为默认值。

我正在使用MySQL ver 5.5.56

答案 7 :(得分:0)

我通过将cosC = ((lineA * lineA) + (lineB * lineB) - (lineC * lineC)) / (2 * lineA * lineB) 更改为DATE

解决了我的问题