플라이웨이와 스프링 부트 통합
Spring Boot 프로젝트에 Flyway를 Hibernate 및 Spring JPA와 통합하려고 합니다.다음과 같은 예외가 발생합니다.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Found non-empty schema "PUBLIC" without metadata table! Use init() or set initOnMigrate to true to initialize the metadata table.
나의pom.xml
는 다음과 같습니다.
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>3.2</version>
</dependency>
postgres(dev stage) 및 h2(local)용으로 Hibernate와 Config Java 파일을 사용하고 있습니다.시그니처는 다음과 같습니다.
@Bean(initMethod = "migrate")
public Flyway flyway() {
Flyway fly = new Flyway();
fly.clean();
fly.init();
//flyway.setInitOnMigrate(true);
fly.setSchemas("SBA_DIALOG");
//flyway.setLocations("filesystem:src/main/resources/db/migration");
fly.setDataSource(this.dataSource());
fly.migrate();
return fly;
}
@Bean(name = "sbaEntityManagerFactory") @DependsOn("flyway")
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
...
나는 이 질문에 나와 있는 나의 문제에 대해 아무것도 찾을 수 없다.누구 도와줄 사람?
Spring-Boot은 스스로 이 작업을 수행할 수 있습니다.프로젝트에 의존적인 플라이웨이를 추가하는 것만으로, 스프링 부트가 그것을 픽업합니다.서비스가 시작되면 플라이웨이 마이그레이션이 시작됩니다.
데이터베이스에 이미 몇 개의 테이블이 있는 경우 다음을 추가합니다.
spring.flyway.baselineOnMigrate = true
일부 테이블이 이미 존재하는 것을 발견했을 때 플라이웨이를 조용하게 유지하도록 속성 파일에 입력합니다. ;-)
플라이웨이가 데이터 소스를 픽업합니다.예를 들어 플라이웨이에 다른 사용자 등이 필요한 경우 다음 속성을 설정할 수 있습니다.
spring.flyway.url: jdbc:postgresql://${db.host}/${db.name}
spring.flyway.user: MYUSER
spring.flyway.password: MYPWD
(당연히 가치를 더하세요!SPEL을 사용하여 다른 속성을 참조할 수 있습니다.)
갱신하다
한 가지 주의사항:클러스터된 데이터베이스를 사용하는 경우 동시에 시작된 여러 인스턴스가 동시에 업데이트를 수행하려고 하는 문제가 발생할 수 있습니다.이는 테이블 잠금이 작동하지 않을 때 발생하는 문제이며, 이는 클러스터화된 mariaDB를 사용하여 발생한 것입니다.
Java 코드로 문제를 해결하려면 다음 명령을 사용합니다.
fly.setBaselineOnMigrate(true);
편집(22-09-2020)
또 다른 해결책도 다음과 같습니다.
spring:
flyway:
baselineOnMigrate: true
validateOnMigrate: false
언급URL : https://stackoverflow.com/questions/29257440/flyway-and-spring-boot-integration
'programing' 카테고리의 다른 글
위치 'class path resource [application-dev.yml]에서 가져온 속성 'spring.profiles.active'가 잘못되었습니다. (0) | 2023.02.23 |
---|---|
Json을 사용한 JSON 배열 해석그물 (0) | 2023.02.23 |
Spring Boot 어플리케이션 부팅 시 Gson Builder 오류가 발생하는 이유는 무엇입니까? (0) | 2023.02.23 |
유튜브에서 동영상을 더 제거하려면 어떻게 해야 하나요? (0) | 2023.02.23 |
지난 30일 동안 데이터를 가져오기 위한 SQL 쿼리? (0) | 2023.02.23 |