在"DEFAULT或ON UPDATE子句中只有一个带CURRENT_TIMESTAMP的TIMESTAMP列"错误,而它只使用一次

Sam*_*ami 3 mysql sql timestamp

我正在使用以下sql创建数据库表:

CREATE  TABLE `cs3_ds1` (
`ID` INT NOT NULL ,
`TIME` TIMESTAMP NOT NULL ,
`USER` VARCHAR(45) NOT NULL ,
`TIME1` TIMESTAMP NOT NULL ,
`TIME2` TIMESTAMP NOT NULL ,
`INSERT_TIME` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
 PRIMARY KEY (`ID`) )
 ENGINE = InnoDB
Run Code Online (Sandbox Code Playgroud)

虽然我只在一列中使用当前时间戳作为默认值,但我收到以下错误:

ERROR 1293: Incorrect table definition; there can be only one TIMESTAMP column with    CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
Run Code Online (Sandbox Code Playgroud)

为什么我收到此错误?

Gar*_*thD 10

MySQL自动初始化TIMESTAMP列DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,因此您的第一列TIME默认添加了CURRENT_TIMESTAMP.因此,当您将DEFAULT显式添加到列时,已经存在.您需要更改列定义的顺序:

CREATE  TABLE `silas`.`cs3_ds1` (
`ID` INT NOT NULL ,
`INSERT_TIME` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
`TIME` TIMESTAMP NOT NULL ,
`USER` VARCHAR(45) NOT NULL ,
`TIME1` TIMESTAMP NOT NULL ,
`TIME2` TIMESTAMP NOT NULL ,
 PRIMARY KEY (`ID`) )
 ENGINE = InnoDB
Run Code Online (Sandbox Code Playgroud)

或者将默认值添加到其他时间戳列:

CREATE  TABLE `silas`.`cs3_ds1` (
`ID` INT NOT NULL ,
`TIME` TIMESTAMP NOT NULL DEFAULT 0,
`USER` VARCHAR(45) NOT NULL  DEFAULT 0,
`TIME1` TIMESTAMP NOT NULL DEFAULT 0 ,
`TIME2` TIMESTAMP NOT NULL DEFAULT 0 ,
`INSERT_TIME` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
 PRIMARY KEY (`ID`) )
 ENGINE = InnoDB
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅MySQL Docs.