본문 바로가기
JAVA & Spring/Error

[Spring][JAVA] org.springframework.dao.DuplicateKeyException 에러 해결 방법

by 알기 쉬운 코딩 사전 2023. 8. 10.
반응형

🚨 Spring 실행시 발생한 에러 메시지

org.springframework.dao.DuplicateKeyException:
java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '500' for key 'role.PRIMARY'

 

 에러 발생 이유

DB의 기본키 관련 무결성 제약 조건에 위배되는 SQL문이 작성되어 발생하는 에러 메시지입니다.

 

✅  해결 방법

DB의 기본키 관련 무결성 제약조건이 있는 소스 코드를 찾아 수정하면 됩니다.

아래 설명문과 이미지를 참고해 주세요.

 

DB 조회


  
select * from role;

테이블을 조회해 본 결과 기본 키 500을 가지고 있는 데이터가 이미 존재했던걸 확인할 수 있었습니다.

참고: DB에서 ID 500인 데이터를 삭제하여도 됩니다.

 

수정 전 소스 코드


  
package kr.or.connect.daoexam.main;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import kr.or.connect.daoexam.config.ApplicationConfig;
import kr.or.connect.daoexam.dao.RoleDao;
import kr.or.connect.daoexam.dto.Role;
public class JDBCTest {
public static void main(String[] args) {
ApplicationContext ac = new AnnotationConfigApplicationContext(ApplicationConfig.class);
RoleDao roleDao = ac.getBean(RoleDao.class);
// 기존 DB에 ID가 500인 Role 데이터가 존재하므로 해당 소스 코드를 수정
// Role role = new Role();
// role.setroleId(500);
// role.setDescription("CTO");
Role role = new Role();
role.setroleId(501);
role.setDescription("CEO");
int count = roleDao.insert(role);
System.out.println(count + "건 입력되었습니다.");
}
}

 

🌟 정상 실행 결과

Spring이 정상적으로 실행되며, DB에 데이터가 추가된 걸 확인할 수 있었습니다.

 

반응형

댓글