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를 떠서 옮길 필요는 없다. 다만 만약의 경우를 대비해서 설치전에 미리 백업을 해두도록 하자.