新的 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 boot Flyway Jooq Code gen maven 插件顺序