Troubleshooting
발생한 문제
- 외래키가 적용된 유저 테이블이 외래키로 인해 drop table 명령으로 테이블이 삭제 되지 않는 문제 발생
해결 과정
원인 파악
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 로 다시 되돌렸다.