Flyway스크립트 중복 에러

최혜미·2024년 4월 21일
0

트러블슈팅

목록 보기
10/10
post-thumbnail

에러

갑자기 REST Docs 문서에 502에러가 난다는 소식을 듣고 서버를 살펴보니 flyway 문제로 서버가 내려간 상태였다.

Caused by: org.flywaydb.core.api.FlywayException: Found more than one migration with version 23

위의 에러 메시지를 확인하고 스크립트 확인을 해보니

V23, V24버전의 스크립트가 중복된 상태... 아무래도 여러사람이 협업을 하고 빠르게 개발, 코드리뷰, 머지를 하다보니 다른 팀원들도 스크립트 버전이 중복된다는 사실을 모르고 approve한 것 같다.

심지어 flyway스크립트에 문제가 생기면 서버가 내려감에도 불구하고 git action에서는 flyway문제가 안걸림...


실제로 스크립트가 중복되어서 문제가 생긴 pr인데 보다시피 git action은 통과가 되어있는 상태이다.

그리고 팀원들의 말을 들어보니 로컬에서도 flyway 문제 때문에 실행자체가 안되는 경우가 많아 다들 로컬에서 flyway를 꺼두고 개발을 한다고 한다(사실 나도 그럼) 그렇다보니 더 문제 발견이 늦는 것 같다.

해결

  1. flyway는 우리가 작성한 스크립트를 추적해 테이블을 생성하기 배포한 데이터베이스의 flyway_schema_history 테이블에서 문제가 생긴 버전부터 그 이후의 버전들을 전부 삭제한다.

flyway_schema_history 테이블이란?
Flyway 데이터베이스 마이그레이션 도구에서 사용하는 중요한 구성 요소이다.
이 테이블은 Flyway가 데이터베이스 스키마를 버전 관리하는 데 사용하며, 데이터베이스에 적용된 모든 마이그레이션의 이력을 저장한다. 각 행은 개별 마이그레이션 작업을 나타낸다.

  1. 배포 데이터베이스에 flyway가 스크립트를 따라서 생성한 테이블도 지워준다.
    (나는 V23 버전에 명시한 테이블부터 그 이후 테이블까지 전부 삭제함.)

    그래야 flyway가 수정된 스크립트를 기반으로 새로 데이터베이스를 생성, 관리해줌

(테이블 삭제 안하면 flyway가 스크립트에 맞춰서 테이블을 생성하려는데 이미 해당 테이블이 있다는 에러 메세지가 뜬다...)

  1. 수정한 스크립트를 커밋, 푸쉬, 배포

  2. 해결~

  • 참고 : 로컬에서도 동일한 문제 발생시 로컬 데이터베이스의 flyway_schema_history 를 확인하면 된다!

해야할 일

  • 현재 flyway때문에 서버가 내려가는 일이 너무 잦다. git action을 손보든 flyway를 떼어버리든 문제 해결을 빠르게 찾아야할 필요가 있다.

느낀점

신기술을 쓰면 이런 참사가 자주 생기는구나를 깨달았다... 너무 힘들...

profile
말하는 감자

0개의 댓글