IT 일기장

[MySQL] Cannot delete or update a parent row: a foreign key constraint fails 해결 본문

프로그래밍 언어/SQL(DB)

[MySQL] Cannot delete or update a parent row: a foreign key constraint fails 해결

뽕슈 2024. 12. 30. 17:48
반응형

이 오류는 MySQL에서 발생하는 전형적인 외래 키 제약 조건 위반이다.

 

보통 외래 키 제약 조건을 가진 테이블에서 부모 테이블의 데이터를 삭제하거나 수정하려고 할 때 자식(참조하는) 테이블에 여전히 연결된 데이터가 있을 경우 이 오류가 발생한다.

 

이 오류를 해결할 수 있는 가장 빠른 방법은 자식 테이블에서 어떤 데이터가 부모 데이터를 참조하고 있는지 조회하는 것이다.

 

MySQL의 INFORMATION_SCHEMA를 활용해 외래 키 관계를 확인할 수 있다.

 

SELECT
    TABLE_NAME AS child_table,
    COLUMN_NAME AS child_column,
    CONSTRAINT_NAME AS constraint_name,
    REFERENCED_TABLE_NAME AS parent_table,
    REFERENCED_COLUMN_NAME AS parent_column
FROM
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
    REFERENCED_TABLE_NAME = 'parent_table';
반응형
Comments