migration tool / spring boot / spring migration 툴 / db / database
gradle 에서 flyway 설정하기
ref. 1 의 방법을 참고하면 된다. 다만 ref. 1 은 구버전의 flyway 에
대한 글이다. 현재 2022-11 기준, 최신버전은 9.7.0
이다.
여기서 이야기하려는 것은 gradle 을 통해서 flyway 를 실행하는
방법이다. 그래서 build.gradle
에 설정해 주면 된다. 다만
몇가지 설정값(pw같은)을 외부로 뺄 것이라서, flyway.conf
파일이 추가로 쓰인다.
디렉토리 구조:
- <proj_root>/
- conf/
- flyway.conf
- build.gradle
build.gradle
- Adding
dependencies on Flyway Database Types :
No database found to handle jdbc:...
같은 error 가 날 때buildscript
부분에classpath
를 추가해야 한다.
buildscript {
repositories {
mavenCentral()
}
dependencies {
...
// for flyway
classpath "org.flywaydb:flyway-mysql:9.7.0"
}
}
plugins {
id "org.flywaydb.flyway" version "9.7.0"
}
config file 예시
config file 은 아래처럼 작성하면 된다.
# flyway.conf
flyway.url=jdbc:mariadb://127.0.0.1:3306/mydatabase?log=true&sessionVariables=time_zone='+00:00'
flyway.user=testflyway
flyway.password=testflyway
flyway.encoding=UTF-8
config file 을 사용해서 실행하는 방법
<proj>/conf/flyway.conf
를 사용하는 법은 Config
file 사용법을 참고하면, 아래처럼 실행을 하면 된다.
아래는 gradlew flywayBaseline
을 실행하는 command
이다.
gradlew -Dflyway.configFiles=./conf/flyway.conf -Dflyway.baselineVersion="1.3.1" -Dflyway.baselineDescription="Existing version of MyDatabase" flywayBaseline
gradlew flywayBaseline -i
를 하면 좀 더 자세한 정보를
확인할 수 있다.
migrate 방법
flywayMigrate
를 하면 다음 경로에 있는 .sql
파일을 실행한다.
<proj>/src/main/resources/db/migration/
gradlew -Dflyway.configFiles=./conf/flyway.conf flywayMigrate
예를 들어
<proj>/src/main/resources/db/migration/V1.3.2__testgen.sql
라는 파일이 있는경우, flywayMigrate 를 하면, 아래처럼 history 가
추가되고, sql file 내의 sql statement 가 실행된다.
주의할점
주의할 점은 위의 flywayBaseline
명령을 할 때
flyway.baselineVersion="1.3.1"
를 정했기 때문에,
flywayMigrate
는 그 이후부터 실행된다. 그래서 만약 .sql
file 의 file 이름이 예를 들어 V1.3.0__testgen.sql
라면,
1.3.1 보다 낮은 버전이기 때문에 실행되지 않는다.
undo
undo 기능은 commecial 에서만 제공한다고 한다.
tip: 그냥 undo 를 하지 말고, 새롭게 버전을 만들고, 그곳에 undo 에서 수행할 내용을 적으면 될 듯 하다.
댓글 없음:
댓글 쓰기