新的 Flyway 迁移破坏了现有的 jOOQ 生成的代码

New Flyway migrations break existing jOOQ generated code

我目前使用 jOOQ 从我的数据库和 Flyway 生成 Java 代码来管理我的二进制 (Java) 迁移以及 SQL 迁移。

但是,我 运行 在修改现有表时遇到了问题。例如,如果我要在一次迁移中删除一列,而过去的二进制迁移依赖于该列,则迁移将出现语法错误,因为该字段不再存在于 jOOQ 中。

我知道我可以只注释掉迁移的主体,但如果我不能重新运行我的迁移或进行迁移,那将破坏 Flyway 或任何类型的数据库版本管理器的全部目的非常乏味(运行 1 次迁移,取消注释,运行 接下来,生成 jOOQ 等)

有没有更好的方法来解决这个问题?

我认为这是一个工作流程问题。

每次迁移都有效地升级了 API,期望 API 的旧用户继续工作简直就是奇迹。

jOOQ 是一个很棒的工具,但在这种情况下使用它(协助迁移)肯定会导致麻烦。

我的建议是重新考虑您的模式演化策略;使用原始 SQL,这对 Flyway 来说很自然,而让 jOOQ 专门协助您的应用程序。