본문 바로가기
Error & Fix

MySQL Cannot Delete or update a parent row 에러 해결방법

by wakestand 2022. 7. 12.
반응형
SQL Error [1451] [23000]: (conn=10) Cannot delete or update a parent row: a foreign key constraint fails

 

MySQL에서 테이블에서

delete나 update를 할 수 없는 경우

위와 같은 에러가 발생하게 되는데

 

내용을 보면 참조하는 테이블(FK) 때문에

해당 테이블의 Row를

삭제하거나 변경할 수 없다는 얘기인데

두 가지 방법으로 해결이 가능하다

 

1. 참조하는 테이블 삭제 혹은 변경 

FK로 참조하는 테이블을 삭제하거나

혹은 FK로 참조하는 Row를 삭제해준 후

에러가 발생했던 Row를 다시

삭제, 변경시켜주면 된다

 

2. SET foreign_key_checks = 0; 사용

위 명령어로

외래키를 참조하지 않게 만들 수 있는데

명령어를 사용한 후

에러가 발생했던 쿼리를 다시 사용해주면

 

FK로 설정해도 제약조건에 걸리는 일 없이

삭제나 수정이 가능해지게 된다

 

다만 FK 제약조건을 일시적으로 해제하기 때문에

데이터가 맞지 않게 변경될수도 있는데

로컬이나 테스트 서버에서 테스트 시에는

데이터 자체가 중요하지 않기 때문에

 

SET foreign_key_checks = 0;

를 사용해준 후

delete, update 쿼리를 사용하고

 

이후

SET foreign_key_checks = 1;

를 사용해서 원래대로 돌려주면 된다

반응형

댓글