【问题标题】:Why won't MySQL let me remove attribute "on update CURRENT_TIMESTAMP"?为什么 MySQL 不允许我删除属性“更新 CURRENT_TIMESTAMP”?
【发布时间】:2011-07-04 19:48:35
【问题描述】:

我有一个包含两个时间戳字段的表。我只是用名称和类型TIMESTAMP 定义了它们,但由于某种原因,MySQL 自动为其中一个设置了默认值和属性on update CURRENT_TIMESTAMP。我计划在这两个字段中都没有默认值,但是其中一个字段称为“date_updated”,所以我想我可以将提到的属性设置为该字段。

不幸的是,这是用on update CURRENT_TIMESTAMP属性设置的字段“date_created”,无论我做什么,MySQL都不会让我删除它。

我已尝试编辑“date_created”字段并删除该属性。单击保存时,该属性又回来了。我还尝试选择两个字段,从其中一个字段中删除属性并将其设置在另一个字段上。它给了我错误#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 并且突然将值上的两个属性列都设置为on update CURRENT_TIMESTAMP 结果:

Error
SQL query:

ALTER TABLE  `pages` CHANGE  `date_created`  `date_created` TIMESTAMP NOT NULL ,
CHANGE  `date_updated`  `date_updated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL

MySQL said: 

#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 

我真的必须以正确的顺序重新创建这两个列来解决这个问题吗?

我想知道如何正确解决这个问题,以供将来参考。

谢谢


现在我也试着跑了

ALTER TABLE pages
CHANGE date_created
 date_created TIMESTAMP NOT NULL

【问题讨论】:

    标签: mysql phpmyadmin mysql-error-1293


    【解决方案1】:

    您应该指定DEFAULT CURRENT_TIMESTAMP(或DEFAULT 0)

    ALTER TABLE pages CHANGE date_created date_created TIMESTAMP NOT NULL DEFAULT 0,
    CHANGE  `date_updated`  `date_updated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL
    

    【讨论】:

    • DEFAULT NULL 也是一个选项吗?
    • @GolezTrol nope,因为它被定义为NOT NULL 它不能为NULL
    • 它总是需要一个默认值吗?对于 NOT NULL 时间戳类型,我的意思是。我有同样的问题,但我无法删除默认值。
    【解决方案2】:

    从 MySQL 5.6.6 版开始,您可以在配置文件中使用 explicit_defaults_for_timestamp 选项,因此时间戳列将没有“DEFAULT CURRENT_TIMESTAMP”或“ON UPDATE”默认情况下,CURRENT_TIMESTAMP' 属性。如果这些列未声明为 NOT NULL,也可以将它们设置为 NULL。

    见:http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 2013-12-21
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 2011-04-26
      相关资源
      最近更新 更多