2016-09-14 110 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来说是很自然的,而不用专门为你的应用程序提供帮助。