반응형
JDBCTest라는 테스트용 main을 만들어 table에 데이터가 추가되는지 확인을 해보려고 했으나 다음과 같은 에러가 나왔습니다.
Console 에러 출력 화면
org.springframework.dao.DuplicateKeyException:
java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '500' for key 'role.PRIMARY'
에러 발생 이유
기본키 관련 무결성 제약 조건에 위배되는 SQL문이 작성되어 발생합니다.
해결 방법
테이블을 조회해 본 결과 기본 키 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);
Role role = new Role();
role.setroleId(500);
role.setDescription("CEO");
int count = roleDao.insert(role);
System.out.println(count + "건 입력되었습니다.");
}
}
수정 후 소스코드
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);
Role role = new Role();
role.setroleId(501);
role.setDescription("CEO");
int count = roleDao.insert(role);
System.out.println(count + "건 입력되었습니다.");
}
}
수정 후 정상 작동되는 걸 확인할 수 있었습니다.
테이블에 데이터 역시 마찬가지로 추가된 걸 확인할 수 있었습니다.
반응형
댓글