2014-11-04 142 views
3

在Flyway Db內部,如果我們使用它將刪除架構中的所有對象,則會有一個名爲'clean'的命令。flywaydb:如何停止意外清潔

刪除配置的模式中的所有對象(表,視圖,過程,觸發器...)。 模式按照模式屬性指定的順序進行清理。

我們如何禁用此功能,以避免在需要之前無意中使用它?

回答

2

在命令行中最好的選擇,是包裝遷飛的劇本跟你一樣。然後,您可以攔截乾淨命令和無操作它。

+0

我會走的路線。 Chaya的回答指出,我寧願不把控制我的構建到我的數據庫中(單點真實的人)。包裝腳本可以與一些配置相結合,例如dev,test,staging(允許清理)和生產(不允許清理)模式列表。 – Drumbeg 2015-11-23 11:46:46

+5

Flyway有一個cleanDisabled選項:https://flywaydb.org/documentation/gradle/clean – jrf 2016-03-09 19:15:58

1

最簡單的方法是管理數據庫的權限並拒絕將操作放到flyway用戶。

如果您沒有掌握數據庫配置並使用java Api,那麼您可以編寫一個Aspect來針對以下切入點「執行(public * org.flywaydb.core.Flyway)中的Around顧問拋出異常。乾淨(..)」(未測試)

+0

但我從默認的命令行唯一的工作,有沒有從有沒有辦法,我可以看到許多錯誤執行合併聲明與正常的AQT執行相比,因爲它在那裏工作得很好...... – 2014-11-05 19:59:22

+0

所以唯一的方法是管理數據庫用戶的權限以拒絕放棄指令。 – Chaya 2014-11-06 07:28:06

0

JRF的評論是更有用的,加上這個作爲答案。

你可以有不同的flyway.conf不同環境下的文件集flyway.cleanDisabled = true/false

與配置文件選項使用飛行用命令:
例如>flyway -configFile=path/to/myAlternativeConfig.conf clean

現在,這應該讓你有分離和使用乾淨的靈活性。就像你可以在dev環境中啓用clean並在prod上禁用它一樣。