개요
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부터 시작되는것을 확인할 수 있다.
'Side Project > Socket' 카테고리의 다른 글
List를 pageable과 PageImpl로 구현하기 - List Paging (0) | 2024.03.15 |
---|---|
List<String> 타입의 경우 Nullable 할 때 주의할 점. (0) | 2024.02.05 |
@Transactional 어느 Layer에 두는게 맞을까? (2) (0) | 2024.02.04 |
[Self-Invocation]@Transactional 어느 Layer에 두는게 맞을까? (1) (0) | 2024.02.04 |
[ERROR] Circle CI에서 오류가 생길경우 살펴볼 것! (0) | 2024.02.04 |