Spring boot flyway
08 Feb 2018local에서는 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
- V로 시작한다.
- version: 숫자, 언더바, 점으로 조합할 수 있다.
- __: version과 description을 구분한다.
- description: flyway_schema_history 테이블의 description 칼럼에 저장되는 값으로 해당 sql의 기능을 설명한다.
- .sql: 확장자는 .sql로 한다.
Repeatable Migrations
flyway의 checksum이 변경될 때마다 실행된다. 다음과 같은 경우에 유용하게 사용할 수 있다.
- views, procedures, functions 등 생성할 때
- 초기데이터를 삽입해야 할 때
파일명이 R로 시작해야 함
- R__People_view.sql