Flyway스크립트 중복 에러

호기성세균·2024년 4월 21일
0

트러블슈팅

목록 보기
10/19
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개의 댓글