1 분 소요

문제 상황

새 브랜치에서 작업하면서 main 브랜치에서의 테이블 구성을 일부 수정하고 merge 후 DB 테이블 정보를 업데이트하는 과정에서 문제가
발생했다. intellij에서 main()을 실행할 때 ddl-autocreate로 설정했어서 잘 진행될줄 알았는데 다음 에러를 뱉었다.

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-autocreate-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번째 실행부터 관련 에러 로그가 남지 않았다.

카테고리:

업데이트:

댓글남기기