에러

[MySQL Error 1701] 외래키 설정이 되어 있는 테이블 데이터가 삭제가 안 되네?

눌지 2024. 5. 31. 13:13

에러 배경

orders의 데이터를 TRUNCATE sql을 사용해 데이터를 삭제하려는 상황에서 발생했다.

에러 그 잡채 

TRUNCATE orders
Error Code: 1701.
Cannot truncate a table referenced in a foreign key constraint
(`BookShop`.`orderedBook`, CONSTRAINT `FK_orderedBook_orders_id`
FOREIGN KEY (`order_id`) REFERENCES `BookShop`.`orders` (`id`))

외래키 설정으로 인해 TRUNCATE 할 수 없다는 에러 메시지가 발생한 상황이다.

해결 과정

해결. 외래키 설정 OFF하고 삭제 후 다시 ON

// 외래키 설정 OFF
SET FOREIGN_KEY_CHECKS = 0;

// 원하는 테이블 데이터 삭제

// 외래키 설정 ON
SET FOREIGN_KEY_CHECKS = 1;

 

정리

간단한 테이블의 초기화이기에 가능했던 꼼수(?)인 느낌이 든다. 관련된 테이블이 많은 경우 어디서 또 문제가 발생할지 모르기 때문에 설정을 건드리는 부분은 조심해야 할 필요가 있을 것 같다.