Ich versuche Flyway für Migrationen in einem Spring Boot-Projekt mit Hibernate und Spring JPA zu integrieren. Ich erhalte die folgende Ausnahme:Integration von Flyway und 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.
Mein pom.xml sucht wie folgt aus:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>3.2</version>
</dependency>
Ich verwende Hibernate und eine Config-Java-Datei für Postgres (dev Stufe) und h2 (lokal). Die Unterschriften sehen so aus:
@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() {
...
Ich kann nichts über mein in dieser Frage beschriebenes Problem finden. Kann jemand helfen?
Spring Boot unterstützt bereits flyway das einzige was du brauchst ist addway als abhängigkeit ... Ich empfehle eine Lektüre des [manual] (http://docs.spring.io/spring-boot/docs/current/ Referenz/html/Howto-Datenbank-Initialisierung.html # Howto-Ausführen-Flyway-Datenbank-Migrationen-beim Start) und für die [Konfigurationseigenschaften] (http://docs.spring.io/spring-boot/docs/ Aktuell/Verweis/html/common-application-properties.html). Für mich sieht es so aus, als würden Sie booten und versuchen Sie sehr hart um es herum zu arbeiten (explizit alles für Beispiel zu konfigurieren). –
ganz komisch: Spring Boot sollte nicht die automatische Konfiguration von Flyway starten, wenn Sie die Flyway für sich konfigurieren (Frage ist, ob es notwendig ist). Der Fehler kommt jedoch von der Boot-Autokonfiguration. Versuchen Sie jedoch, "flyway.initOnMigrate = true" zu Ihrer application.properties hinzuzufügen und entfernen Sie Ihre eigene Flyway-Initialisierung :) – sodik
thx für die Treffer. – imalik8088