我遇到了一个我无法解决的SQL问题。
ALTER TABLE `news` ADD `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT , ADD PRIMARY KEY ( `dateAdded` )
错误:
(#1067)Invalid default value for 'dateAdded'
有人能帮助我吗?
答案 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