ima*_*088 24 java spring hibernate flyway spring-boot
我试图在Spring Boot项目中使用Hibernate和Spring JPA集成Flyway进行迁移.我得到以下例外:
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.
Run Code Online (Sandbox Code Playgroud)
我pom.xml看起来像这样:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>3.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我正在使用Hibernate和一个用于postgres(开发阶段)和h2(本地)的配置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() {
...
Run Code Online (Sandbox Code Playgroud)
我找不到关于我在这个问题中描述的问题的任何内容.有人可以帮忙吗?
Pat*_*sen 48
Spring-Boot能够独立完成这项工作.只需将flyway添加为项目的依赖项,spring-boot就会将其解除.飞行迁移将在服务启动时启动.
如果您已经在数据库中添加了一些表:
flyway.baseline-on-migrate=true
Run Code Online (Sandbox Code Playgroud)
在你的属性文件中,当发现一些表已经存在时,保持飞路平静.;-)
Flyway应该拿起您的数据源.如果您需要另一个用户或类似飞路的用户,您可以设置以下属性:
flyway.url: jdbc:postgresql://${db.host}/${db.name}
flyway.user: MYUSER
flyway.password: MYPWD
Run Code Online (Sandbox Code Playgroud)
(当然添加您的值!您可以使用SPEL引用其他属性)
更新
需要注意的一点是:如果使用群集数据库,则可能会遇到同时启动的多个实例同时尝试执行更新的问题.当表锁不起作用时,这是一个问题,这发生在使用集群mariaDB的情况下.
对于任何想要在 Java 代码中解决它的人,您可以使用:
fly.setBaselineOnMigrate(true);
Run Code Online (Sandbox Code Playgroud)
另一个解决方案也是:
spring:
flyway:
baselineOnMigrate: true
validateOnMigrate: false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61683 次 |
| 最近记录: |