본문 바로가기
MySql

MySQL 한 번만 사용되는 동안 "DEFAULT 또는 ON UPDATE 절에 CURRENT_TIMESTAMP가있는 하나의 TIMESTAMP 열만"오류가 발생합니다.

by 베이스 공부 2021. 2. 7.
반응형

다음 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

현재 타임 스탬프를 하나의 열에서만 기본값으로 사용하고 있지만 다음과 같은 오류가 발생합니다.

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

이 오류가 발생하는 이유는 무엇입니까?

 

해결 방법

 

MySQL은 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 를 사용하여 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

또는 다른 타임 스탬프 열에 기본값을 추가합니다.

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


 

참조 페이지 https://stackoverflow.com/questions/11031946

 

 

반응형

댓글