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

Posted

技术标签:

【中文标题】新的 Flyway 迁移破坏了现有的 jOOQ 生成的代码【英文标题】:New Flyway migrations break existing jOOQ generated code 【发布时间】:2017-01-22 09:15:00 【问题描述】:

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

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

我知道我可以只注释掉迁移的主体,但是如果我不能重新运行我的迁移或让它变得非常乏味(运行 1 次迁移,取消注释,下一步运行,生成 jOOQ 等)

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

【问题讨论】:

您是说您正在使用Flyway Java migrations 并且在这些迁移中您正在使用 jOOQ 来协助迁移? 没错,问题是生成的jooq代码依赖于数据库的状态。 【参考方案1】:

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

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

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

我的建议是重新考虑架构演化策略;使用 Flyway 很自然的原始 SQL,而让 jOOQ 专门为您的应用程序提供帮助。

【讨论】:

以上是关于新的 Flyway 迁移破坏了现有的 jOOQ 生成的代码的主要内容,如果未能解决你的问题,请参考以下文章

如何一起使用Spring启动,JOOQ和Flyway?

尽管配置,JOOQ 不会忽略未知功能

自动生成 Flyway 的迁移 SQL

Spring boot Flyway Jooq Code gen maven 插件顺序

在 Maven 中使用带有 Flyway 和 jOOQ 的嵌入式数据库进行持续集成

FlyWay 迁移策略