flyway는 DB에 schema_version 테이블을 유지하면서, DB 상태를 버전으로 관리할 수 있게끔 도와준다. 

(나중에 DB를 실행해도 버전에 맞게 데이터를 밀어넣어준다.) 

 

 

DB에 데이터가 존재하는 상태에서 flyway를 적용할 때 발생하는 문제

```

Caused by: org.flywaydb.core.api.FlywayException: Found non-empty schema "SYSTEM" without metadata table! Use baseline() or set baselineOnMigrate to true to initialize the metadata table.

```

  • DB가 비어있지 않아(상태를 가지고 있어) flyway를 적용할 수 없다는 것. flyway를 사용하려면 DB 상태에 대한 버전 관리가 되어야 한다.
  • 설명 대로 baseline() 호출하면 현재 상태를 최초 상태 (V1)으로 만들어준다.
  • 이렇게 되면 DB에 이미 V1이 존재하므로, V1 script가 있으면 migrate 시 이미 있는 버전이라고 예외가 발생한다. (V2 script 부터 migrate해야함)
  • 하지만 V1 부터 관리하는 것이 편하므로... baseline() 호출 전 baselineVersion을 0으로 설정하면, 초기 상태가 V0로 세팅되어 V1부터 migrate 가능하다.

 

'RDBMS > specific' 카테고리의 다른 글

docker 안의 DB를 사용할 때 timezone 문제  (0) 2021.05.19
PostgreSQL 설치  (0) 2020.12.04
[Oracle] 오라클 개요 및 정리  (0) 2019.05.31
DB 접근 툴 : Universal Database Tool  (0) 2019.05.27
[mysql] 일반적인 SQL  (0) 2017.06.11