[PostgreSQL] ERROR: duplicate key value violates unique constraint

0

SpringBoot

목록 보기
1/2

스프링부트에서 API를 작업중 데이터 등록하는 과정에서 리턴값이 정상적으로 들어오지 않아서 에러 로그를 확인하여보니 아래와 같은 에러 메시지를 확인 할 수 있었다.

ERROR: duplicate key value violates unique constraint "admin_equip_pkey"

스프링부트 JPA Postgre를 사용할때 프로그램상에서 데이터를 삽입하지 않고 데이터베이스에 강제로 삽입하는 경우가 있다.
아마도 내가 작업하는 시점에 다른 개발자가 데이터를 넣은 모양이다.(실제로 데이터 존재가 확인됨😅)

이 경우 API를 통해서 데이터를 삽입하려고 할때 위와 같이 "ERROR: duplicate key value violates unique constraint" 에러가 발생 할 수 있다.

이는 PostgreSql에 시퀀스를 사용할때 시퀀스 객체와 테이블 키값이 불일치로 발생되는 에러라고 한다.

해결방법

  1. 오류가 난 테이블의 최대 키 값을 조회한다.
SELECT MAX(id)
FROM table; 

  1. nextval함수가 있는 시퀀스 값을 조회한다.
SELECT nextval('table_id_seq');

  1. 시퀀스 객체 값을 테이블 키 값으로 변경한다.
SELECT setval('table_id_seq', (SELECT MAX(id) FROM table));

끝!

0개의 댓글