반응형
개발환경
- OS: windows 10
- java version: openjdk-1.8
- Gradle version: 7.0
- Springboot Version: 2.3.5
- flyway version: 6.4.2
- Database: MariaDB 1.5.6
Flyway란?
- Flyway는 Open Source Migration Tool 입니다.
- Java나 c++같은 프로그램의 소스 코드는 svn/git 과 같은 형상관리 툴로 쉽게 관리할 수 있지만, Database는 위와 같은 툴로 변경이력을 관리할 수 없습니다.
Spring Boot에서 Flyway 사용하기
의존성 추가
- maven이나 gradle에 아래와 같이 의존성을 추가합니다.
1) maven
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
2) gradle
dependencies {
implementation 'org.flywaydb:flyway-core:6.4.2'
}
sql 파일 생성
- resources/db/migration 폴더를 생성 후, V1_init.sql 파일을 생성합니다.
- 만약 경로를 변경하고 싶을 경우에는 application.properties 파일에 spring.flyway.location=파일위치 를 사용합니다.
- 위 파일은 꼭 따라야 하는 네이밍 규칙이 있습니다. 그에 관련된 내용은 아래와 같습니다.
- File Naming
- 왼쪽부터 prefix, version, description, suffix 순
- prefix: devault로 V는 버전 마이그레이션, R은 반복 마이그레이션 용 접두사(반드시 V또는 R로 시작해야 flyway가 인식)
- version: version은 버전 마이그레이션에서만 사용되며, 숫자와 Dots(점)이나 underscore(언더바) 조합으로 구성(반복 마이그레이션에서 version을 명시하면 file name 제약 위반으로 에러 발생)
- version과 description 사이의 __(언버바 2개)는 반드시 있어야 함(1개면 에러 발생)
- descriptiuon: schema_version 테이블에 저장 시 설명으로 사용
- suffix: 확장자 기본은 .sql
application.properties 파일에 아래 내용 추가
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/mysql
spring.datasource.username=username
spring.datasource.password=password
# FLYWAY (FlywayProperties)
spring.flyway.baseline-on-migrate=true
spring.flyway.baseline-version=0
spring.flyway.useMysqlMetadata=true
- spring.flyway.baseline-on-migrate
- 기본값: false
- false:로 하려면 flyway_schema_history 테이블이 생성되어 있어야 함
- true로 하면 flyway_schema_history 테이블이 없는 경우 생성함
- spring.flyway.baseline-version
- 기본값: 1
- 보통 버전파일이 V1__의 형태로 버전 1부터 시작하기 때문에 0으로 하는 것을 추천
- gradle에 flyway 플러그인을 설정하는 것은 gradle을 통해서 flyway 명령어를 실행하기 위한 설정으로, flyway명령을 gradle을 통해서 쓸 것이 아니라면 딱히 설정할 필요 없음
- flyway는 url을 파싱하여 드라이버를 자동 선택함
Spring boot Run
spring boot를 run하면 접속한 DB 스키마(여기서는 mysql)에 flyway_schema_history 테이블이 생성됩니다.
[참고] 에러
Flyway 10.1 is no longer supported by Flyway Community Edition, but stil supported by Flyway Pro Edition.
> MariaDB의 버전을 10.2 이상으로 올리면 해결됩니다.
728x90
반응형
'Database ( DB ) > Database' 카테고리의 다른 글
CentOS 7에 MariaDB 설치 (0) | 2021.01.02 |
---|---|
mssql] Adding an identity to an existing column (0) | 2021.01.01 |
HikariCP Dead lock (0) | 2020.10.18 |
HikariCP 소개 (0) | 2020.10.17 |
Spring boot Data JPA 2.0에서 auto_increment 문제 해결 (2) | 2020.10.14 |