MySQL | 테이블 생성 (DEFAULT timestamp 관련) 에러
MySQL 5.5 이하 버전에서는 테이블을 생성 시에 DEFAULT 값을 아래와 같이 하나의 TIMESTAMP 필드일 경우는 문제지만
CREATE TABLE table_a (
time_a timestamp DEFAULT CURRENT_TIMESTAMP
)
두개의 TIMESTAMP를 사용하는 경우 에러가 발생된다.
CREATE TABLE table_a (
time_a timestamp DEFAULT CURRENT_TIMESTAMP,
time_b timestamp DEFAULT CURRENT_TIMESTAMP
)
에러 메세지는 아래와 같다.
Error Code : 1293
Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
이는 테이블 하나에 TIMESTAMP 타입은 컬럼 한개에만 DEFAULT로 CURRENT_TIMESTAMP를 지정할 수 있다는 내용이다.
이런 경우는 아래와 같이 하나의 필드에만 DEFAULT 로 CURRENT_TIMESTAMP를 지정해 주고, 다른 하나에 컬럼에 INSERT시 CURRENT_TIMESTAMP로 초기화 시켜주어야 한다.
CREATE TABLE table_a (
time_a timestamp DEFAULT CURRENT_TIMESTAMP,
time_b timestamp
)
이 제한 사항은 5.6부터 해제되었기에, mysql-server-5.5를 mysql-server-5.6으로 업그레이드하면 문제가 해결된다.
리눅스 우분투를 사용중이라면 아래와 같은 명령어로 업그레이드가 가능하다.
$ sudo apt-get update
$ sudo apt-get install mysql-server-5.6
이미 5.5에서 관리하고 있던 데이터베이스가 있더라도, 위와 같이 5.6을 설치하면 자동으로 데이터베이스가 이전되므로 별도로 dump를 떠서 옮길 필요는 없다. 다만 만약의 경우를 대비해서 설치전에 미리 백업을 해두도록 하자.
최종 수정 : 2019-12-22