-
SQLIntegrityConstraintViolationExceptionDebuging 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에 설정해준 것처럼 이름을 세팅해주고 다시 실행해봤다.


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