티스토리 뷰
어느 순간부터 갑자기 flyway가 커뮤니티와 팀즈 버전으로 나뉘어져 있었다.
주인장은 커뮤니티 버전을 사용했다.
스프링 3.0.0부터 의존 모듈 설치가 달라졌음을 유의하자.
gradle 버전은 7.5.1 이다.
flyway는 opensource database migration tool 중 하나이다.
flyway를 사용하여 mariadb 연결할 떄에는
mysql 관련 의존성 모듈을 다운받는다. (mariadb 별도 모듈은 지원하지 않고 있다)
설정 (application.yml)
spring:
datasource:
# jdbc driver info
url: <DB 연결 정보>
username: <USER 정보>
password: <PASSWORD 정보>
driver-class-name: org.mariadb.jdbc.Driver
jpa:
hibernate:
ddl-auto: validate
properties:
hibernate:
dialect: org.hibernate.dialect.MariaDBDialect
format_sql: true
show-sql: true
generate-ddl: false # flyway 설정2
flyway: #flyway 설정
baseline-on-migrate: true # 기존 DB가 있는 초기 마이그레이션할 때 사용
enabled: true
설치 정보 (build.gradle)
//build.gradle
buildscript {
ext {
queryDslVersion = "5.0.0"
}
repositories {
mavenCentral()
}
dependencies { // 추가 (클래스 패스 등록)
classpath "org.flywaydb:flyway-mysql:9.8.3"
}
}
plugins {
id "org.flywaydb.flyway" version "9.8.3" // 추가 (플러그인 설치)
}
dependencies {
// 추가 (의존 모듈 설치)
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
implementation('org.flywaydb:flyway-core:9.8.3')
compileOnly 'org.flywaydb:flyway-mysql:9.8.3'
}
// flyway 연결 정보 설정(configfuration)
flyway {
driver = 'org.mariadb.jdbc.Driver'
url = '<URL>:<PORT>/<DB>' // 예: jdbc://mariadb://localhost:3306/flyway
user = '<USER>'
password = '<PASSWORD>'
createSchemas=true
table = 'schema_history'
locations = ['classpath:migrations']
// (configfuration) 관련 링크 https://flywaydb.org/documentation/usage/gradle/migrate
}
설치 끝마쳤으면 gradle 명령어로 테스트해보자.
gradle flywayMigrate -i
결과
정상적으로 지정된 스키마에 엔티티에 등록된 테이블 + schema_history 테이블을 확인할 수 있다.
매번 스프링은 버전이 변경됨에 따라 관련 라이브러리, 모듈들에 대해
설치방식이 조금씩 달라져서 이를 찾는데 있어 시간이 많이 소비되는 것 같다.
참고:
https://flywaydb.org/documentation/database/mariadb
댓글