Spring boot flyway

local에서는 DB migration을 적용하지 않고 prod에서만 DB migration을 적용한다고 가정한다.

dependency

implementation("org.flywaydb:flyway-core")

application-prod.yml

spring:
    datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:53306/myshop?useSSL=false&characterEncoding=UTF-8&allowPublicKeyRetrieval=true
        username: root
        password: 1234
    jpa:
        properties:
            hibernate:
                dialect: org.hibernate.dialect.MySQL8Dialect

application-local.yml

spring:
    flyway:
        enabled: false

resources.db.migration아래에 sql파일을 추가한다.

파일 이름 생성 규칙

V«version»__«description».sql

예)V1__init.sql

Repeatable Migrations

flyway의 checksum이 변경될 때마다 실행된다. 다음과 같은 경우에 유용하게 사용할 수 있다.

파일명이 R로 시작해야 함

Reference