“添加日期”的默认值无效
Posted
技术标签:
【中文标题】“添加日期”的默认值无效【英文标题】:Invalid default value for 'dateAdded' 【发布时间】:2012-02-18 19:36:54 【问题描述】:我遇到了一个无法解决的愚蠢的 SQL 问题。
ALTER TABLE `新闻` ADD `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT , 添加主键(`dateAdded`)
错误:
(#1067)Invalid default value for 'dateAdded'
有人可以帮帮我吗?
【问题讨论】:
这可能是一个愚蠢的问题,但你为什么要AUTO_INCREMENT
DATETIME
?
【参考方案1】:
我通过将DATE
更改为DATETIME
解决了我的问题
【讨论】:
【参考方案2】:我有同样的问题, 以下修复解决了我的问题。
选择类型为“TIMESTAMP”
不要在长度/值字段中输入任何内容。保持空白
选择 CURRENT_TIMESTAMP 作为默认值。
我正在使用 mysql 5.5.56 版
【讨论】:
【参考方案3】:将类型从日期时间更改为时间戳,它将起作用! 我对 mysql 5.5.56-MariaDB - MariaDB Server 有同样的问题 希望它可以帮助...对不起,如果贬低
【讨论】:
【参考方案4】:还要注意,在 MySQL 5.7.x 上将 DATETIME
指定为 DATETIME(3)
或类似时,您还必须为 CURRENT_TIMESTAMP(3)
添加相同的值。如果不是,它将继续抛出“无效的默认值”。
【讨论】:
这解决了我在 5.7.x 上的问题。我的日期时间字段被定义为 datetime(6) 并使用 CURRENT_TIMESTAMP(6) 解决了问题 这是非常值得注意的。【参考方案5】:mysql version 5.5 设置 datetime 默认值为 CURRENT_TIMESTAMP 会报错 您可以更新到 5.6 版本,它将日期时间默认值设置为 CURRENT_TIMESTAMP
【讨论】:
【参考方案6】:我的 LEMP 上有 mysql 版本 5.6.27,默认值 CURRENT_TIMESTAMP 可以正常工作。
【讨论】:
【参考方案7】:CURRENT_TIMESTAMP
是特定于版本的,现在从版本 5.6 开始允许用于 DATETIME
列。
见MySQL docs。
【讨论】:
你确定吗?我在 5.7.x 版本中遇到上述错误【参考方案8】:CURRENT_TIMESTAMP
仅适用于 TIMESTAMP
字段。 DATETIME
字段必须保留空默认值,或者根本没有默认值 - 默认值必须是常量值,而不是表达式的结果。
相关文档:http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
您可以通过在表上设置插入后触发器以在任何新记录上填充“现在”值来解决此问题。
【讨论】:
从 mysql 5.6.5 开始,您可以将 CURRENT_TIMESTAMP 与 DATETIME 字段一起使用。见dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html 感谢 Frank,在尝试将导出的数据库从最新的 xampp 导入到早期版本时发现了这个问题。 HCD ,Frank ...发现从 MariaDb 10.x 导出到 MariaDB 5.5 的相同问题 ...谢谢 这个错误也发生在 mariadb 5.5 中。升级到 mariadb 10 并解决。谢谢弗兰克以上是关于“添加日期”的默认值无效的主要内容,如果未能解决你的问题,请参考以下文章