본문 바로가기
프로그래밍/Java & Spring

Flyway 에러처리

by 방구석개발자 2022. 6. 16.
반응형

Flyway 란? 

Welcome to Flyway, database migrations made easy.
Flyway는 오픈 소스 데이터베이스 마이그레이션 도구입니다. - flywaydb.org-

 

플라이웨이는 디비 마이그레이션 도구로써 데이터베이스 형상관리를 위해서 사용합니다.

형상관리란 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것으로, 형상 관리는 일반적인 단순 버전 관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 이야기합니다.

자세한 내용은 우아콘 flyway 를 참고하시면 좋을거 같습니다.

Flyway_schema_history

flyway_schema_history는 flyway사용할때 생기는 테이블 입니다.

flyway를 사용하면 sql 파일을 돌면서 실행하게 되고 flyway_schema_history 테이블에 관리를 위하여 flyway가 insert해줍니다.

flyway_schema_history 에는 다음과 같은 중요한 컬럼이 있습니다.

version: 말 그대로 버전을 의미합니다.

script : 어떤 스크립트를 돌렸는지 스크립트 파일명을 알 수 있습니다.

checksum: 스크립트 파일내용의 해시값으로 파일내용이 변경되면 에러를 일으킬수 있습니다.

Flyway 에러났을때?

다음과 같은 작업시에 에러가 날 수 있습니다.

  • 다른 개발자와 ddl 작업을 하다가 같은 버전(ex V100_~.sql)의 sql파일을 올릴때
  • sql파일을 수정했을때(기본적으로 flyway를 사용하면 sql파일을 수정하지 않는게 원칙입니다.)

flyway bean에러가 난다.

설정에 따라서는 checksum이 어떤게 변경되었는지도 로그로 나오게 됩니다.

에러처리 하는 방법 2가지

  • flyway.migrate() 하기전에 flyway.repair(); 를 사용하여 checksum을 재설정하게 됩니다.
@Bean
public Flyway flywayBean() {
    Flyway flyway = Flyway.configure().baselineOnMigrate(true).load();
        flyway.repair();
        flyway.migrate();
    return flyway;
}
  • flyway_schema_history checksum update 문을 이용하여 checksum을 수정합니다.
update flyway_schema_history set checksum = '-1051671522'
where version = 7;

참고

https://flywaydb.org/documentation/

 

Homepage - Flyway

Version control for your database. Robust schema evolution across all your environments. With ease, pleasure, and plain SQL.

flywaydb.org

반응형

댓글