-
Notifications
You must be signed in to change notification settings - Fork 20
[BE] DB flyway
xrabcde edited this page Aug 3, 2021
·
8 revisions
- Flyway는 오픈소스 마이그레이션 툴이다.
- 소스코드를 형상관리하는 Git과 같이 Flyway는 버전 관리 목적인 SCHEMA_VERSION 테이블을 통해 SQL 스크립트의 변화를 추적하면서 자동적으로 DB를 관리한다.
- 스프링 부트
build.gradle
에서 의존성을 추가한다.
dependencies {
implementation 'org.flywaydb:flyway-core:6.4.2'
}
-
application.properties
에 아래 설정을 추가한다.
# flyway
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으로 하는 것을 추천
-
resources/db/migration
위치에 sql 파일을 생성한다. - 파일의 네이밍 규칙은 다음과 같다.
- 왼쪽부터 prefix, version, description, suffix 순
- prefix : default로 V는 버전 마이그레이션, R은 반복 마이그레이션 용 접두사 (반드시 V 혹은 R로 시작)
- version : version은 버전 마이그레이션에서만 사용되며 숫자나 언더바 조합으로 사용
- version과 description 사이의
__
(언더바 2개)는 반드시 있어야 함 (1개면 에러 발생) - description : schema_version 테이블에 저장시 설명으로 사용
- suffix : 확장자, 기본은
.sql
- 컬럼 추가
ALTER TABLE table_name ADD COLUMN ex_column varchar(20) NOT NULL;
- 컬럼 변경
ALTER TABLE table_name MODIFY COLUMN ex_column varchar(20) NULL;
- 컬럼 이름까지 변경
ALTER TABLE table_name CHANGE COLUMN ex_column ex_column2 varchar(20) NULL;
- 컬럼 삭제
ALTER TABLE table_name DROP COLUMN ex_column;