我正在尝试实施数据库迁移Flyway 4.2.0 + Oracle 11g
我有这个空架构:
当我尝试迁移时,Flyway 说:
造成原因:org.flywaydb.core.api.FlywayException
: 发现非空
模式“PASHA
" 没有元数据表!使用baseline()
或设置baselineOnMigrate
to 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;
}
为什么我会收到此消息?我的基地是空的。
Flyway 本身使用查询来检查模式是否为空。
对于 oracle,查询是 https://github.com/flyway/flyway/blob/flyway-4.2.0/flyway-core/src/main/java/org/flywaydb/core/internal/dbsupport/oracle/OracleSchema.java#L76:
SELECT * FROM ALL_OBJECTS WHERE OWNER = ?
执行该查询(用您的所有者代替?
)并查看它是否返回某些内容(确实如此)。
例如,尚未清除的 LOB 会显示在那里。如果是这种情况,请尝试:
purge recyclebin;
并且查询现在应该为空。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)