본문 바로가기
Side Project/Socket

[MySQL] 테이블 데이터 다 지우기

by asdft 2024. 2. 5.

개요

API 테스트를 하면서 DB에 너무 많은 데이터 값이 쌓여 이를 깨끗히 비우기 위해서 사용한 방법을 소개하려고 한다.

 

foreign key constraint fails 에러

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

mysql> DELETE TABLE [테이블명] or TRUNCATE [테이블명]

ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

 

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

 

해결방법

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

 

위 방법을 사용하면 기존 데이터가 다 삭제되고, 새로 쌓인 Data의 ID 값이 1부터 시작되는것을 확인할 수 있다.