[Spring] Error executing DDL… Table doesn’t exist
문제 상황
새 브랜치에서 작업하면서 main 브랜치에서의 테이블 구성을 일부 수정하고 merge 후 DB 테이블 정보를 업데이트하는 과정에서 문제가
발생했다. intellij에서 main()
을 실행할 때 ddl-auto
을 create
로 설정했어서 잘 진행될줄 알았는데 다음 에러를 뱉었다.
2023-08-06T21:01:10.659+09:00 WARN 12497 --- [ main] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL "
alter table description_image
drop
foreign key FK38x3xptdrrwey8bsb66gdg80p" via JDBC [Table 'fittering.description_image' doesn't exist]
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "
alter table description_image
drop
foreign key FK38x3xptdrrwey8bsb66gdg80p" via JDBC [Table 'fittering.description_image' doesn't exist]
새 브랜치에서 연관관계를 수정해준게 문제가 있나 싶어 테이블을 아예 없앴다가 내리기 위해 ddl-auto
를 create-drop
로 수정해
봤으나 같은 에러가 반복됐다. 외래키 제약조건을 삭제하려고 하는걸보니 기존 환경에서 아예 내렸어야 했나 싶었다.
혹시 몰라 SET foreign_key_checks = 0
을 실행해 외래키 제약조건 체크 설정을 해제하고 테이블을 모두 삭제한 뒤
SET foreign_key_checks = 1
을 해봤으나 문제는 여전했다.
해결
이전에 테스트 환경을 분리하기 위해서 application-test.yml
을 별도로 작성해주고 application.yml
에 다음처럼
적어줬었다.
spring:
profiles:
active: local, test
...
테스트 환경에서 사용하는 DB는 운영 DB와 다르게 설정했었다. 이렇게 적고나니 테스트를 할 때는 문제가 없었으나 운영 DB에서는
계속 말썽이었다. 아직도 정확한 원인은 모르겠지만.. active
에서 test
를 삭제해주면서 의외로 쉽게 해결할 수 있었다.
삭제 후 첫 실행 때는 같은 에러가 원래만큼은 아니지만 조금 남아있었는데 2번째 실행부터 관련 에러 로그가 남지 않았다.
댓글남기기