自动生成 Flyway 的迁移 SQL

Posted

技术标签:

【中文标题】自动生成 Flyway 的迁移 SQL【英文标题】:Automatic generation of migration SQL for Flyway 【发布时间】:2016-06-29 07:20:53 【问题描述】:

当通过 Java 代码添加新模型/字段等时,JPA/Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移。

捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中会很有用,以便查看/编辑/提交到项目存储库。

提前感谢您提供的任何帮助或启发。

【问题讨论】:

这里有一些相关的讨论; ***.com/questions/18536256/… 谢谢@JamieB,我们最终只是把它当作一件苦差事来处理。手动为每个迁移制作 SQL。 Flyway 和 Liquibase 之间的评估仍在进行中。 【参考方案1】:

如果您选择的 IDE 是 IntelliJ IDEA,我建议使用 JPA Buddy 插件来执行此操作。它可以通过将您的 Java 模型与目标数据库进行比较来生成 Flyway 迁移。

您可以使用它来使您不断发展的模型和您的 SQL 脚本保持同步。 此外,如果您的数据库为空,它可以创建初始化脚本。

安装 Flyway 并将 Flyway 作为 Maven/Gradle 依赖项后,您可以生成如下迁移:

【讨论】:

【参考方案2】:

Flyway 没有对 diff 的内置支持,我在 maven spring boot 项目中使用了liquidbase,并且可以使用以下命令从 JPA/hibernate 更改创建更改日志:

mvn liquibase:diff

liquibase diff 的所有选项都位于此处: http://www.liquibase.org/documentation/maven/maven_diff.html

【讨论】:

谢谢这是我最终做的。老实说,我忘记了这个问题。

以上是关于自动生成 Flyway 的迁移 SQL的主要内容,如果未能解决你的问题,请参考以下文章

Flyway 数据库迁移在部署新战争时自动运行

使用 Docker 和 Jenkins 自动化 Flyway 迁移

如何从 IntelliJ IDEA 中的模型类生成 Flyway 迁移脚本?

Flyway 数据库迁移到多个模式

flyway mysqldump迁移

使用 Flyway 时的 SQL SET 设置