계정 삭제 기능을 개발하던 중, 스웨거를 통해 API 테스트를 진행하였습니다.
테스트 결과 예상치 못한 409 상태 코드와 함께 다음과 같은 에러 메시지를 받았습니다.
{
"message": "DataIntegrityViolationException: PreparedStatementCallback; SQL [DELETE FROM users WHERE id = ?]; Cannot delete or update a parent row: a foreign key constraint fails (`pickup_db`.`match`, CONSTRAINT `match_ibfk_1` FOREIGN KEY (`host_id`) REFERENCES `users` (`id`))",
"status": 409
}
이 에러는 데이터베이스의 외래키(Foreign Key) 제약조건으로 인해 발생했습니다.
Primary Key - 기본 키(PK)
Foreign Key - 외래 키(FK)
현재 고려할 수 있는 해결 방안은 두 가지:
ALTER TABLE match
ADD CONSTRAINT match_ibfk_1
FOREIGN KEY (host_id) REFERENCES users (id)
ON DELETE CASCADE;
async function deleteAccount(userId: string) {
// 1. 사용자가 생성한 매치 데이터 삭제
// 2. 사용자 데이터 삭제
// 3. 결과 반환
}
백엔드 팀에 현재 상황 전달
프론트엔드 처리 방향
데이터베이스 관계의 중요성
프론트엔드와 백엔드의 역할 분담
이 이슈를 통해 프론트엔드 개발자도 데이터베이스 구조와 제약조건에 대한 기본적인 이해가 필요하다는 것을 다시 한번 깨달았습니다.