Spring boot JPA Posgre를 사용할때 프로그래밍으로 데이터를 삽입, 삭제 하지않고 Datagrip으로 강제로 삽입, 삭제 하는 경우가 종종 있다.
이 경우 새로 프로그래밍으로 데이터를 삽입하려 할때 ERROR: duplicate key value violates unique constraint
이 에러가 발생했다.
이는 Postgre에 sequence를 사용할때 sequence객체와 테이블 키값에 불일치로 발생되는 에러라고 한다.
SELECT MAX(id) FROM table;
SELECT NEXTVAL('table_id_seq');
난 이부분에서 JPA가 자동으로 sequence 이름을 주었기에 table_id_seq
대신 hibernate_sequence
라고 명시했다.
이 두개 값을 조회했을때 값은 다를것이다. 이것을 맞춰주어야 오류가 해결된다
SELECT SETVAL('hibernate_sequence', (SELECT MAX(id) FROM table))