Я пытаюсь интегрировать Flyway для миграции в проекте Spring Boot с Hibernate и Spring JPA. Я получаю следующее исключение:Интеграция Flyway и 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.
Мой pom.xml смотрит как это:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>3.2</version>
</dependency>
Я использую Hibernate и конфигурационный файл Java для Postgres (этап Dev) и h2 (местный). Подписи выглядят так:
@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 уже поддерживает пролет, единственное, что вам нужно, это добавить пролет в качестве зависимости ... Я предлагаю прочитать [manual] (http://docs.spring.io/spring-boot/docs/current/ reference/html/howto-database-initialization.html # howto-execute-flyway-database-migrations-on-startup) и для [свойств конфигурации] (http://docs.spring.io/spring-boot/docs/ ток/ссылка/HTML/общее приложение properties.html). Для меня это похоже на то, что вы используете загрузку и очень стараетесь работать с ней (явно настраивая все, например). –
довольно странно: весенний ботинок не должен начинаться с автоконфигурации пролетного пути, если вы настроите пролет для себя (вопрос, если это необходимо). однако ошибка возникает из-за автоконфигурации загрузки. однако попробуйте добавить 'flyway.initOnMigrate = true' к вашим приложениям.properties и удалить свою собственную инициализацию flyway :) – sodik
thx для хитов. – imalik8088