我遇到了一个无法解决的SQL愚蠢问题。
ALTER TABLE`新闻` ADD`dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT, 添加主键(`dateAdded`)
错误:
(#1067)Invalid default value for 'dateAdded'
有人可以帮我吗?
Answers:
CURRENT_TIMESTAMP
仅在TIMESTAMP
字段上可接受。DATETIME
字段必须保留为空的默认值,或者根本不保留任何默认值-默认值必须为常量值,而不是表达式的结果。
相关文档:http : //dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
您可以通过在表上设置插入后触发器以在任何新记录上填充“现在”值来解决此问题。
在MySQL 5.7.x上指定DATETIME
as DATETIME(3)
或like 时,也要注意,还必须为添加相同的值CURRENT_TIMESTAMP(3)
。如果不是,它将继续抛出“ 无效的默认值 ”。
我的LEMP和CURRENT_TIMESTAMP上有mysql版本5.6.27,因为默认值可以正常工作。
从日期时间更改类型为时间戳,它将起作用!我对于mysql 5.5.56-MariaDB有相同的问题-MariaDB服务器希望它可以帮助...
AUTO_INCREMENT
DATETIME
呢?