DATABASE

[MariaDB/Mysql] 제약조건 무시하고 테이블 삭제하기

예나부기 2021. 8. 10.

foreign key constraint fails 에러

개발 진행 중에 테스트 데이터나 빠진 컬럼이 있는 등 테이블의 데이터를 모두 삭제해야 하는 순간이 있다. 이 때 한 테이블에서 다른 테이블을 참조하고 있다면 다음과 같은 에러가 발생하면서 데이터가 삭제되지 않는다.

mysql> DELETE TABLE [테이블명] or TRUNCATE [테이블명] ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

DELELTE TABLE과 TRUNCATE 의 차이점은 여기를 참고해주세요.

이는 Mysql이 테이블 간 관계가 있는 데이터를 함부로 수정하거나 삭제할 수 없도록 안전장치를 해두었기 때문에 에러를 통해 경고하는 것이다.

해결 방법

그럼에도 불구하고 데이터를 삭제하고자 한다면 삭제하고자 하는 테이블에서 다음과 같은 명령어를 실행하면 된다.

mysql> SET foreign_key_checks = 0; // 체크 해제 
mysql> DELETE TABLE [테이블명] or TRUNCATE [테이블명] 
mysql> SET foreign_key_checks = 1; // 다시 체크 설정

이는 테이블 자체를 삭제하는 SQL문인 DROP TABLE [테이블명]에도 사용할 수 있다.

 

https://velog.io/@bigbrothershin/Mysql-foreign-key-%EB%AC%B4%EC%8B%9C%ED%95%98%EA%B3%A0-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0

 

 

댓글