MySQL 외래키 적용 테이블 삭제

wisdom·2022년 10월 3일
0

트러블슈팅

목록 보기
12/12

Troubleshooting

발생한 문제

  • 외래키가 적용된 유저 테이블이 외래키로 인해 drop table 명령으로 테이블이 삭제 되지 않는 문제 발생
    foreign-key

해결 과정

원인 파악

  • ddl-auto: create 실행 시, user 테이블이 먼저 drop 되고, refresh_token 테이블이 뒤에 drop 되어서 해당 문제가 발생하고 있다.

해결 방법

1. 참조하는 테이블 삭제

  • user 테이블은 refrsh_toekn 테이블의 PK를 가져와서 FK로 사용하고 있기 때문에 참조하는 테이블인 refresh_token 테이블을 먼저 삭제하고 user 테이블을 삭제해준다.

2. 테이블 삭제 시, FK 체크 제거

SET foreign_key_checks = 0;
  • 해당 명령어를 사용해주면 테이블 간의 관계가 깨지기 때문에 테이블 간의 데이터가 맞지 않을 수 있다. 하지만 테이블에 중요한 데이터가 들어있지 않거나, 테스트용 데이터의 경우에는 사용해도 무관하다.
  • 현재 테스트를 진행하고 있어ddl-auto: create 로 설정되어 있어 있다. 그래서 애플리케이션이 재실행될 때마다 기존 테이블 삭제 후 다시 생성된다. 따라서 2번 명령어를 사용해서 해결했다.
  • 문제 해결 후, ddl-auto: update 로 변경했고, foreign_key_checks = 1 로 다시 되돌렸다.
profile
문제를 정의하고, 문제를 해결하는

0개의 댓글