在我的Java应用程序中,我设置了:
flyway.setBaselineVersionAsString("7")
然而,在一个尚未拥有schema_version
表的全新数据库中,Flyway不考虑基线设置并运行所有迁移。
有没有办法在迁移开始之前强制创建schema_version
表,因为我试图手动创建表并且代码工作正常。或者还有其他解决方案吗?
答案 0 :(得分:1)
如果您正在运行baseline
,那么您需要发布更多配置以确定错误 - 因为创建一个带有基线版本的schema_version
表正是它所做的。
如果您正在运行migrate
,则观察到的行为是正确的 - 也就是说,在非Flyway托管数据库上,将创建schema_version
表并运行所有迁移。唯一的例外是,如果您设置了baselineOnMigrate
,它将在baseline
启动之前有效地运行隐式migrate
。
自己创建schema_version
肯定是不正在做的事情,你将完全妥协Flyways情报。
答案 1 :(得分:0)
我在这种情况下已经来过很多次了。我做的方法是检测flyway.info()的结果。如果为null,则表示架构具有对象,但没有“ schema_version”表-然后像您一样设置基线。