본문 바로가기
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에 데이터가 추가된 걸 확인할 수 있었습니다.

반응형

댓글