본문 바로가기

ETC

[mysql] foreign key가 존재하는 table을 truncate/delete할때 constraint 에러 문제 해결하기

반응형

문제상황

truncate 테이블명;

ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (`DB명`.`참조하는 테이블`, CONSTRAINT `test` FOREIGN KEY (`외래키`) REFERENCES `DB명`.`테이블명` (`컬럼`))

 

외래키가 존재하는 테이블을 삭제할때는 위와 같은 에러메시지가 발생한다.

어떻게든 내용을 지워야 할 경우에는 아래와 같이 외래키(Foreign key) 체크를 하지 않는다는 설정을 해주고 다시 원복을 해주는 방식으로 지울 수 있다.

 

 

해결방법

> set FOREIGN_KEY_CHECKS = 0;
Query OK, 0 rows affected (0.000 sec)

> truncate 테이블명;
Query OK, 0 rows affected (0.351 sec)

> set FOREIGN_KEY_CHECKS = 1;
Query OK, 0 rows affected (0.000 sec)

 

그러면 테이블의 내용이 모두 삭제된 것을 확인할 수 있다.

반응형