除非schema_version表在数据库中,否则Flyway基线不起作用

时间:2016-09-27 10:40:14

标签: java flyway

在我的Java应用程序中,我设置了:

flyway.setBaselineVersionAsString("7")

然而,在一个尚未拥有schema_version表的全新数据库中,Flyway不考虑基线设置并运行所有迁移。

有没有办法在迁移开始之前强制创建schema_version表,因为我试图手动创建表并且代码工作正常。或者还有其他解决方案吗?

2 个答案:

答案 0 :(得分:1)

您正在运行哪个命令,baselinemigrate

如果您正在运行baseline,那么您需要发布更多配置以确定错误 - 因为创建一个带有基线版本的schema_version表正是它所做的。

如果您正在运行migrate,则观察到的行为是正确的 - 也就是说,在非Flyway托管数据库上,将创建schema_version表并运行所有迁移。唯一的例外是,如果您设置了baselineOnMigrate,它将在baseline启动之前有效地运行隐式migrate

自己创建schema_version肯定是正在做的事情,你将完全妥协Flyways情报。

答案 1 :(得分:0)

我在这种情况下已经来过很多次了。我做的方法是检测flyway.info()的结果。如果为null,则表示架构具有对象,但没有“ schema_version”表-然后像您一样设置基线。