Chapter01/Sping boot

[ PostgreSQL ] ERROR: duplicate key value violates unique constraint

EmmaDev_v 2025. 11. 11. 11:37
반응형

 

 


ERROR: duplicate key value violates unique constraint "pk_mng_mbr"

Detail: Key (mbr_sn)=(31067) already exists.

 

 

이런 에러가 발생했다.

 

 

 

현재 값(last_value)이 31067로,
실제 테이블의 최대 mbr_sn 값(31110)보다 작아 시퀀스가 뒤처진 상태입니다.
이에 따라 신규 데이터 등록 시 중복 키 오류가 발생하고 있습니다.

 


mbr_sn는 회원일련번호이고, 테이블 내에서 자동으로 증가하는 시퀀스 넘버라 key 역할이다.

 

데이터를 삽입할 때 테이블에 존재하는 시퀀스에 +1 해서 자동생성인데

무슨일인지 중복된 값이 있다고함

 

 

 

열댓명이 다 만지고 있으니 

누가 어떻게해서 생긴 이슈인지는 찾을수없었고,

시퀀스를 현재 테이블의 최대값으로 동기화해야함

 


SELECT setval('tb_user_mbr_mbr_sn_seq', (SELECT MAX(mbr_sn) FROM tb_user_mbr), true);

 

SELECT MAX(mbr_sn) FROM tb_user_mbr)

=> tb_user_mbr 테이블에서 mbr_sn의 최대값 조회

 


SELECT setval('tb_user_mbr_mbr_sn_seq', ..., true)

=> PostgreSQL의 setval 함수로 tb_user_mbr_mbr_sn_seq라는 시퀀스값을 위 쿼리에서 구한 최대값으로 설정.

세 번째 인자인 true는 다음 할당될 값이 최대값 바로 다음 값이 되도록 설정

반응형