当前位置: 首页 > 知识库问答 >
问题:

Flyway在空模式上找到非空模式

古刚洁
2023-03-14

我正在尝试使用Flyway 4.2.0 Oracle 11g实现DB迁移

我有一个空模式:

当我尝试迁移时,Flyway说:

原因:<代码>组织。flywaydb。果心应用程序编程接口。FlywayException(FlywayException):找到了不带元数据表的非空架构“PASHA(PASHA)”!使用baseline()或将baselineOnMigrate设置为true初始化元数据表。

这是配置:

@Bean(initMethod = "migrate")
Flyway flyway() {
    Flyway flyway = new Flyway();
    flyway.setBaselineOnMigrate(false);
    flyway.setSchemas("PASHA");
    flyway.setLocations("classpath:db/migration/oracle");
    flyway.setDataSource("jdbc:oracle:thin:@host:1521:test", "login", "password");
    return flyway;
}

为什么我会收到此消息?我的基地是空的。

共有3个答案

刘才俊
2023-03-14

添加所有这些都有帮助。但是没有Spring的那一个真的做到了!虽然很傻,但还是奏效了!

spring.flyway.baselineOnMigrate=true
spring.flyway.baseline-on-migrate = true
flyway.baseline-on-migrate= true
flyway.baselineOnMigrate=true
姚善
2023-03-14

您需要让Flyway自己创建模式(意味着不应该有一个事先创建的“PASHA”模式),或者对现有模式进行基线设置(意味着使用Flyway.setBaselineOnMigrate(true)设置您的配置)。

基本上,Flyway尝试创建一个已经存在的模式(在您的示例中为“PASHA”)。

葛成济
2023-03-14

Flyway本身使用查询来检查架构是否为空。

在oracle的情况下,查询是:

SELECT * FROM ALL_OBJECTS WHERE OWNER = ?

执行该查询(让您的所有者代替)并查看它是否返回了某些内容(确实返回了)。

例如,未清除的LOB显示在那里。如果是这种情况,请尝试:

purge recyclebin;

查询现在应该为空。

 类似资料:
  • 我正在尝试使用kotlin Spring boot、jpa和PostgreSQL配置flyway。我的分级依赖关系是: 我只有一个迁移,它是在这里找到的示例迁移的kotlinized版本,我对其进行了修改,以查看以下内容: 我错过了什么?为什么Flyway一直抱怨在数据库完全为空(干净的docker映像)的情况下,发现没有模式历史表的非空模式“public”?

  • 主要内容:实现,AbstractCustomer.java,RealCustomer.java,NullCustomer.java,CustomerFactory.java,NullPatternDemo.java在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。 在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展

  • 空状态发生于一个常规内容页面不能显示时。可能是一个没有条目的列表,或者一个没有返回结果的搜索。虽然这些情况不是典型的,但也是展示良好设计以避免用户失望或者困惑的好机会。 如果因为一个系统错误不能显示内容,参见 app errors。 显示空状态 避免完全空的内容 显示空状态 最基本的空状态显示一个非交互的图片和文本标语。 使用一个图片: 相对于背景来说,显得巧妙和素净。 以一个生动的方式传达应用的

  • 在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。 在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。 实现 我们将创

  • 在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。 在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。 实现 我们将创

  • 我正在尝试使用kotlin Spring Boot、jpa和postgreSQL配置flyway。我的gradle依赖项是: 我的application.properties文件是: 使用jpa和hibernate创建表和条目按预期工作。但是,在空数据库上进行示例迁移会导致: 我的目录结构是spring Initializer生成的默认目录结构,我的迁移位于: