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 가능하다.

 

'Data Store' 카테고리의 다른 글

docker 안의 DB를 사용할 때 timezone 문제  (0) 2021.05.19
[Oracle] Pagination  (0) 2021.05.17
Flyway  (0) 2021.05.13
[Oracle] longest match  (0) 2021.02.16
DB 이중화 / 클러스터링  (0) 2020.09.23
redis  (0) 2020.03.10