[SPRING]could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement 오류

chic yeon·2021년 6월 15일
2

오류

could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement

원인

@Test
public void delete(){ // 삭제
    Optional<Member> member = memberRepository.findById(3L);
    Optional<Team> team  = teamRepository.findById(2L);

    member.ifPresent(selectMember ->{
        memberRepository.delete(selectMember);
    });

    team.ifPresent(selectTeam ->{
        teamRepository.delete(selectTeam);
    });


}

member(자식)테이블의 컬럼을 삭제하려고 했을때 외래키의 무결성 제약조건에 위배 되어 발생한 오류

해결

부모 키값이 삭제되면 연관된 자식 컬럼도 삭제 시키기 위해 새롭게 외래키 제약조건을 추가 해주거나 기존 제약조건을 삭제 후 추가함

  1. ALTER TABLE "테이블 이름" DROP FOREIGN KEY "제약조건 명";
  1. alter table "테이블 이름" add constraint "제약조건 명" foreign key (컬럼 이름) references "부모 테이블" (PK 이름) on delete cascade;
profile
이제 시작하는 Back-end

0개의 댓글