Sto cercando di integrare Flyway per le migrazioni in un progetto Spring Boot con Hibernate e Spring JPA. Sto ottenendo la seguente eccezione:Integrazione Flyway e Spring Boot
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.
mio pom.xml sta cercando in questo modo:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>3.2</version>
</dependency>
Sto usando Hibernate e un file di configurazione java per Postgres (stadio dev) e H2 (Locale). Le firme sono simili al seguente:
@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() {
...
Non riesco a trovare nulla sul mio problema descritto in questa domanda. Qualcuno può aiutare?
Spring Boot supporta già flyway l'unica cosa di cui hai bisogno è aggiungere flyway come dipendenza ... Suggerisco una lettura del [manuale] (http://docs.spring.io/spring-boot/docs/current/ reference/html/howto-database-initialization.html # howto-execute-flyway-database-migrations-on-startup) e per [proprietà di configurazione] (http://docs.spring.io/spring-boot/docs//riferimento/html/common-application-properties.html corrente). Per me sembra che tu stia usando il boot e ci sforzi molto per aggirarlo (configurando esplicitamente tutto per esempio). –
piuttosto strano: l'avvio a molla non dovrebbe avviare l'autoconfigurazione flyway se si configura da solo il flyway (la domanda è se è necessario). tuttavia, l'errore deriva dalla configurazione automatica di avvio. comunque prova ad aggiungere 'flyway.initOnMigrate = true' alle tue applicazioni.proprietà e rimuovi la tua inizializzazione flyway :) – sodik
thx per i colpi. – imalik8088