programing

Flyway로 다중 데이터베이스 설정

oldcodes 2023. 10. 31. 22:40
반응형

Flyway로 다중 데이터베이스 설정

Flyway 5.0.7, 개발용 MySQL, 테스트용 H2로 두 가지 다른 데이터베이스를 설정하려고 합니다.두 데이터베이스 모두 각각의 파일로 구성하였습니다.

개발의 경우 src/메인/리소스/응용프로그램.properties.

spring.datasource.url=jdbc:mysql://localhost:3306/moment
spring.datasource.username=root
spring.datasource.password=root

flyway.locations=db/migration,db/specific/mysql

테스트의 경우, src/test/resource/application.properties

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
spring.datasource.username=sa
spring.datasource.password=sa

flyway.locations=db/migration,db/specific/h2

아래는 Flyway 마이그레이션 파일의 폴더 구조입니다.

Flyway migration file structure

이 경우 Flyway는 아래에서 마이그레이션 파일을 찾을 수 없습니다.specific폴더 및 적용 시 오류 발생V1.1__Insert_Records.sql위해서table not found.

제가 옮기면.specific폴더 안에db/migration, 동일한 버전의 중복 파일에 대해 오류가 발생하고 있습니다.

Flyway와 함께 작동하려면 여러 데이터베이스의 마이그레이션 파일을 어떻게 구성해야 합니까?

여기서 스프링부트 2.x를 사용하고 계신 것 같은데요?그렇다면,flyway.locations더 이상 유효하지 않으며 무시됩니다.

그러면 Flyway가 기본 위치를 사용합니다(db/migration)만 찾을 수 있습니다.V1.1__Insert_Records.sql대본은 안되고V1__Create_table.sql대본.

Spring Boot 2.x에서는 다음과 같이 접두사를 붙여야 합니다.

spring.flyway.locations=db/migration,db/specific/h2

그건 그렇고, 당신이 사용한다면.{vendor}위치의 자리 표시자인 Spring Boot는 데이터베이스 드라이버 ID(h2, mysql, oracle 등)의 소문자에서 디렉토리를 계산합니다.

spring.flyway.locations=db/migration,db/specific/{vendor}

언급URL : https://stackoverflow.com/questions/51346712/setting-up-multiple-database-with-flyway

반응형