2016-09-27 19 views
1

在我的Java应用程序中我已经设置了数据库:迁飞性基线不会,除非schema_version表工作是在

flyway.setBaselineVersionAsString("7") 
然而

一个全新的数据库上还没有的schema_version表迁飞不考虑基准设置并运行所有迁移。

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

回答

1

你正在运行哪个命令,baselinemigrate

如果您正在运行baseline,那么您需要发布更多配置以确定什么是错误的 - 因为使用basline版本创建schema_version表正是它的功能。

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

自己创建schema_version肯定是你应该做的不是你会完全妥协Flyways情报。

+0

我实际上是将baselonOnMigrate设置为true。我设置基线使用flyway.setBaselineVersionAsString(“7”) 然后我使用flyway.migrate()... 但仍然所有的迁移从1开始执行。 –

+0

'schemas'设置为什么?根据['baselineOnMigrate'](https://flywaydb.org/documentation/commandline/migrate)docs“是否在对不含元数据表的非空模式执行迁移时自动调用基线”。你是否指向一个不存在或空的模式? – markdsievers

+0

是的,这是一个空的模式,我将要进行迁移,但有时我不希望所有迁移都完成,我只想从某个版本迁移完成。这就是为什么我使用基线设置的原因,但迁移仍然是从一开始就完成的。 –