Duplicate key value violates unique constraint

포스트를 저장하는 API에서 500번대 에러가 발생하였다. 에러 로그를 찍어보니 "QueryFailedError: dupliacte key value violates unique constraint "PK_eff3e46d24d416b52a7e0ae4159"라고 출력되었다.

 

원인

TypeORM에서 @Entity를 통해 테이블을 생성하고, id 칼럼을 @PrimarayGeneratedColumn을 사용하여 primary key로 지정하고 unique value로 지정하고 PostgreSQL로 매핑하였는데 데이터를 복사하여 테이블로 이동시키면서 시퀀스 객체와 테이블의 키 값에 차이가 나면서 insert시 Duplicate key value violates unique constraint 에러가 발생된다.

 

해결 방법

 

1. Duplicate key error가 발생한 테이블의 최대 키 값을 찾아본다.

SELECT MAX(id) FROM 테이블명;

 

2. 시퀀스 객체 값을 확인한다.

SELECT nextval('테이블명_id_seq');

 

3. 시퀀스 객체 값을 테이블 키 값으로 변경한다.

SELECT setval('테이블명_id_seq', (SELECT MAX(id) FROM 테이블명));

 

위와 같이 시퀀스 객체 값과 테이블 키 값을 동일하게 하면, Duplicate key value error는 해결된다.

'개발 > PostgreSQL' 카테고리의 다른 글

쿼리 실행 계획 시각화하기  (0) 2022.01.24
psycopg2 macOS 설치 불가 문제  (0) 2021.10.19
[PostgreSQL] LIKE문과 ILIKE문의 차이  (0) 2021.10.05