ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQLIntegrityConstraintViolationException
    Debuging 2022. 8. 31. 22:06

     

    Cannot add or update a child row: a foreign key constraint fails 
    (`stepstone`.`#sql-1898_92`, CONSTRAINT `FKkth6nbx4fl29impm13x6q94x6` FOREIGN KEY
    (`ChatRoomEntity_chat_room_cid`) REFERENCES `chat_rooms` (`chat_room_cid`))

    멋사 해커톤 프로젝트에서 ManyToMany 매핑을 설정하던 중 다음 에러가 발생했다.

     

    그리고 db에 들

    어가보니까 다음과 같이 컬럼이 새로 생성됐다.

    ManyToMany annotation으로 자동 외래키 설정하던 중 컬럼의 이름을 잘못 설정하는 것 같았다. 구글링하여 조인 테이블과 컬럼을 다음과 같이 설정해주었다.

     

        @JoinTable(
                name = "chat_rooms_users",    // 연결테이블 이름
                joinColumns = @JoinColumn(name = "chat_room_cid"),// 유저와 매핑할 조인 컬럼 정보를 지정
                inverseJoinColumns = @JoinColumn(name = "user_cid")// 채팅방과 매핑할 조인 컬럼 정보를 지정
        )
        Set<UserEntity> users;

     

    그래도 컬럼 이름만 바뀌고 같은 오류가 발생했다.

    Cannot add or update a child row: a foreign key constraint fails 
    (`stepstone`.`#sql-1898_9d`, CONSTRAINT `FKhgkqsdujw00vgdimhw9ma6j43` 
    FOREIGN KEY (`chat_room_cid`) REFERENCES `chat_rooms` (`chat_room_cid`))

    FKhgkqsdujw00vgdimhw9ma6j43

    이 값에 집중해서 찾아보니 외래키 설정해주는 창을 가니까 키 이름으로 등록돼 있었다.

     

     

    컬럼 이름을 JoinTable annotation에 설정해준 것처럼 이름을 세팅해주고 다시 실행해봤다.

     

     

     

     

     

    그랬더니 에러 없이 잘 실행되었다. :)

Designed by Tistory.