MySQL错误"在DEFAULT子句中只能有一个带CURRENT_TIMESTAMP的TIMESTAMP列",即使我没有做错任何错误

Sim*_*son 6 mysql sql database

CREATE TABLE AlarmHistory
(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    value DOUBLE NOT NULL,
    startedStamp TIMESTAMP NOT NULL,
    finishedStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
);
Run Code Online (Sandbox Code Playgroud)

尝试创建上面的表时,我收到以下错误:"SQL错误(1293):表定义不正确;在DEFAULT或ON UPDATE子句中只能有一个TIMESTAMP列与CURRENT_TIMESTAMP".

我的问题是这个错误?因为可以肯定,我有两个TIMESTAMP列,但只有一个列具有默认定义.当我删除startedStamp时,我没有错误.

Dam*_*ver 11

根据MySQL手册,版本5.5,自动初始化和更新TIMESTAMP

既没有DEFAULT CURRENT_TIMESTAMP也没有ON UPDATE CURRENT_TIMESTAMP,它与指定DEFAULT CURRENT_TIMESTAMP和两者相同ON UPDATE CURRENT_TIMESTAMP.

CREATE TABLE t1 (
  ts TIMESTAMP
);
Run Code Online (Sandbox Code Playgroud)

然而,

使用常量,默认值是给定值.在这种情况下,该列根本没有自动属性.

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT 0
);
Run Code Online (Sandbox Code Playgroud)

所以,这应该工作:

CREATE TABLE AlarmHistory
(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    value DOUBLE NOT NULL,
    startedStamp TIMESTAMP DEFAULT 0 NOT NULL,
    finishedStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

小提琴