본문 바로가기

Programming/Cloud

[Redshift][Amazon](500310) Invalid operation : relation already exists;

안녕하세요. 잇킹 시도르입니다.

오늘은 AWS의 Redshift에서 작업을 하다가 발생한 에러를 공유하려고 합니다.

 

구축 단계에서 개발을 하다 보면 테이블 변경이 잦습니다. 샘플 데이터를 넣었다가 삭제도 하고 테이블 백업도 하면서 개발을 진행하던 중에 테이블을 드롭 후 재생성하고 나서 PK를 지정하려니 다음과 같은 에러가 나더라고요.

SQL Error[500310] [42P07] : [Amazon](500310) Invalid operatioin : relation pk명 already exists;

 

테이블 스크립트를 자동화해서 pk명을 pk_테이블명으로 하고 있어서, 해당 상황을 이해를 못했습니다. PK가 존재한다니.. 원인 파악을 못하고, 테이블을 다시 드롭하고 생성하고 PK 지정을 반복했는데 동일 에러가 나면서 멘붕에 빠졌습니다.

 

Redshift 자체 버그가 있나 하고 인터넷 검색하다가 깨우친게 그냥 constraint를 전체 조회하여 해당 pk명을 한번 검색해 보면 되겠더라고요. 그래서 하위 쿼리문을 통해서 pk 제약 조건을 검색했습니다. 

* information_schema.table_constraints는 Reshift의 제약 조건을 집계한 메타 테이블입니다.

SELECT *
  FROM information_schema.table_constraints a 
 WHERE a.constraint_name like '%pk명%'

 

information_schema.table_constraint 테이블에서 제약명을 검색해서, 결국 동일한 pk명으로 백업 테이블의 pk가 지정된 것을 확인할 수 있었습니다. 개발 진행하면서 샘플 데이터를 백업하기 위해 테이블을 복사하면서 발생한 문제였었던거죠. 간단하게 해답을 찾을 수 있는 문제였지만, 꽤나 고생했었네요.

 

이상입니다!!!