Flyway 在空模式上发现非空模式

ip6*_*696 5 java oracle11g flyway spring-boot

我正在尝试实施数据库迁移Flyway 4.2.0 + Oracle 11g

我有这个空架构:

没有表的模式

当我尝试迁移时,Flyway 说:

原因::org.flywaydb.core.api.FlywayException发现非空模式“ PASHA”,没有元数据表!使用baseline()或设置 baselineOnMigratetrue初始化元数据表。

这是配置:

@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;
}
Run Code Online (Sandbox Code Playgroud)

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

acd*_*ior 5

Flyway 本身使用查询来检查模式是否为空。

对于 oracle,查询是

SELECT * FROM ALL_OBJECTS WHERE OWNER = ?
Run Code Online (Sandbox Code Playgroud)

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


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

purge recyclebin;
Run Code Online (Sandbox Code Playgroud)

并且查询现在应该为空。


N. *_*hmi 2

您需要让 Flyway 本身创建模式(意味着不应该事先创建“PASHA”模式),或者为现有模式设置基线(意味着使用 来设置您的配置flyway.setBaselineOnMigrate(true))。

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


归档时间:

查看次数:

7149 次

最近记录:

5 年,2 月 前