【问题标题】:mysql 5.6.3 issue with CURRENT_TIMESTAMP default value on TIMESTAMP fieldmysql 5.6.3 问题与 TIMESTAMP 字段上的 CURRENT_TIMESTAMP 默认值
【发布时间】:2016-11-02 15:34:23
【问题描述】:

我已经解决了许多与我的问题相似的问题,但似乎都与尝试使用带有 DATETIME 字段的默认 CURRENT_TIMESTAMP 有关。

我在使用带有 TIMESTAMP 字段的 CURRENT_TIMESTAMP 默认值时遇到问题,据我所知应该支持该字段。

我正在使用 MySQL 5.6.3 社区版。这是我的表创建代码的部分摘录:

CREATE  TABLE IF NOT EXISTS `my_table` (
`master_id`    INT(10) NOT NULL AUTO_INCREMENT ,
`template_id`   INT(10) NULL,
`def_id`    INT(10) NOT NULL,
'override`  TINYINT(1) NULL,
`last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ...  

这个错误出来了:

“last_update”的默认值无效

有什么想法吗?

【问题讨论】:

  • 将文件定义为last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP,然后重试。我在 5.7 上对此进行了测试,所以我不知道它是否适用于 5.6(因此有评论)。
  • 为了记录,这不是反引号 - 这是一个复制/粘贴问题。我在实际语句中使用了正确的引号。
  • 在没有 NOT NULL 的情况下如上所述定义字段没有帮助。
  • 我在 5.5 和 5.7 上测试了我建议的解决方案(此时无法访问 5.6),它给出了正确的结果。我知道这不是反勾号问题,我只是没有将它们包含在评论中。

标签: mysql


【解决方案1】:

找到答案了。

有人(不是我)在 MySQL my.cnf 上设置了以下内容:

explicit_default_for_timestamp = 1

删除此设置解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 2014-07-03
    • 2019-11-18
    • 1970-01-01
    • 2020-01-24
    • 2010-11-30
    • 1970-01-01
    相关资源
    最近更新 更多