2016-09-14 108 views
0

我目前使用jOOQ從我的數據庫和Flyway生成Java代碼來管理我的二進制(Java)遷移以及SQL遷移。新的Flyway遷移破壞現有的jOOQ生成的代碼

但是,當我修改現有表時遇到問題。例如,如果我要在一次遷移中刪除列,並且過去的二進制遷移依賴於該列,則遷移將具有語法錯誤,因爲該字段不再存在於jOOQ中。

我知道我只是註釋了遷移的主體,但是如果我不能重新運行我的遷移或使它變得非常單調(運行1遷移),那麼這會挫敗Flyway或任何類型的數據庫版本管理器的全部目的,取消註釋,運行下一步,生成jOOQ等)

有沒有更好的方法來解決這個問題?

+0

你是說你正在使用[Flyway Java遷移](https://flywaydb.org/documentation/migration/java)以及你正在使用jOOQ協助遷移的遷移? – markdsievers

+0

是的,問題在於生成的jooq代碼取決於數據庫的狀態。 –

回答

2

我認爲這是一個工作流程問題。

您正在有效地升級每個遷移的API,期望該API的傳統使用者繼續工作將毫無奇蹟。

jOOQ是一個很好的工具,但在這種情況下使用它(協助遷移)肯定會導致麻煩。

我的建議是重新思考你的架構演化策略;使用原生SQL,這對於Flyway來說是很自然的,而不用專門爲你的應用程序提供幫助。