发现非空模式`schema_name`没有元数据表

问题描述 投票:2回答:1

我已经研究了这个问题,并发现其中有一个为我工作的回答类似的问题,但没有。

在尝试运行Spring应用程序,它有启动的ApplicationContext错误失败。

此错误是FlywayException的结果

这个问题似乎出现因为数据库已经有一个名为“SCHEMA_NAME”和迁徙路线架构不知道如何当它发现这种非空模式反应。该模式是在没有飞行路线问题产品代码使用更多的包和类。

该模式已经有一个flyway_schema_history表与飞路基线开始。

误差输出如下所示:

Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Found non-empty schema `schema_name` without metadata table! Use baseline() or set baselineOnMigrate to true to initialize the metadata table.

我曾尝试设置flyway.baselineOnMigrate =真实的,但导致进一步的问题在于迁徙路线尝试运行最初加入DB表的SQL文件 - 它显然不能,因为他们存在!

我application.properties文件具有数据源下面的代码:

spring.datasource.url=jdbc:mysql://localhost:3306/schema_name
spring.datasource.username=user
spring.datasource.password=pass
spring.jpa.hibernate.ddl-auto=update

POM的文件中包含这对于飞行用的依赖,其中flyway.version是5.0.7:

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>${flyway.version}</version>
</dependency>

有没有人遇到过类似的问题?

UPDATE

我试着在我添加fly.baselineOnMigrate,抢走休眠线,但收到以下错误的第一个答案:

2019-02-06 10:07:32.233 INFO 82403 --- [ main] o.f.c.i.dbsupport.DbSupportFactory : Database: jdbc:mysql://localhost:3306/schema_name (MySQL 5.7) 2019-02-06 10:07:32.272 INFO 82403 --- [ main] o.f.core.internal.command.DbValidate : Validated 31 migrations (execution time 00:00.027s) 2019-02-06 10:07:32.318 INFO 82403 --- [ main] o.f.c.i.metadatatable.MetaDataTableImpl : Creating Metadata table: schema_name.schema_version 2019-02-06 10:07:32.379 INFO 82403 --- [ main] o.f.core.internal.command.DbBaseline : Schema baselined with version: 1 2019-02-06 10:07:32.395 INFO 82403 --- [ main] o.f.core.internal.command.DbMigrate : Current version of schema schema_name: 1 2019-02-06 10:07:32.395 INFO 82403 --- [ main] o.f.core.internal.command.DbMigrate : Migrating schema schema_name to version 2.0 - Creates TABLE_NAME tables 2019-02-06 10:07:32.407 WARN 82403 --- [ main] o.f.c.internal.dbsupport.JdbcTemplate : DB: Table 'TABLE_NAME' already exists (SQL State: 42S01 - Error Code: 1050) 2019-02-06 10:07:32.409 ERROR 82403 --- [ main] o.f.core.internal.command.DbMigrate : Migration of schema schema_name to version 2.0 failed! Please restore backups and roll back database and code!

java flyway
1个回答
0
投票

首先,你必须通过设置它的价值spring.jpa.hibernate.ddl-auto或删除禁用此选项none,因为它会导致Hibernate来更新数据库模式,但你必须飞路为。由于它在documentation真实指出,这个属性

自动验证或创建SessionFactory的时候出口模式的DDL到数据库

第二件事,你必须添加此flyway.baselineOnMigrate = true属性,使飞路与你没有空模式工作。由于您的Hibernate将不与任何数据填充模式,你将不会运行与现有表的问题。

© www.soinside.com 2019 - 2024. All rights reserved.