2016-09-27 75 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

是的,這是一個空的模式,我將要進行遷移,但有時我不希望所有遷移都完成,我只想從某個版本遷移完成。這就是爲什麼我使用基線設置的原因,但遷移仍然是從一開始就完成的。 –