【问题标题】:How can I version control Stored Procedures while using flywaydb?如何在使用 flywaydb 时对存储过程进行版本控制?
【发布时间】:2014-06-18 10:17:51
【问题描述】:

我目前有一个使用 Microsoft SQL Server 后端的 Java Web 应用程序。数据库迁移目前由 sqlcmd 手动完成,它使用 :r 命令来引用我们存储过程和视图的脚本文件。

这样每个存储过程都有自己的文件“proc_someprocedure.sql”。迁移由升级脚本“6.1 upgrade.sql”完成,该脚本引用proc文件删除并在其当前版本中重新创建它。

我们希望迁移到 flyway 并让应用程序在部署时迁移它自己的数据库。但是,我找不到任何简单的方法来为每个存储过程维护一个源代码文件。如果存储过程发生更改,我需要在版本控制中同时更改 V_6_1__change.sql 文件和 proc_someprocedure.sql 文件。

我试图避免复制/粘贴 sql 代码,因为它过去一直困扰着我们。其他人如何处理这种情况?

【问题讨论】:

    标签: java sql-server stored-procedures database-migration flyway


    【解决方案1】:

    从 3.0 开始,对此没有一流的支持。然而,有 3 种方法可以实现这一点:

    • 使用自定义的 MigrationResolver 挂钩到您使用的任何源代码控制并以这种方式检测更改
    • 使用 FlywayCallback,通过 afterMigrate 重新创建所有存储过程
    • 在单独的架构中使用单独的 Flyway 实例并将 cleanOnValidationError 设置为 true。每次校验和更改时,都会清理架构并重新运行该 Flyway 实例管理的所有迁移

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 2013-06-11
    • 2017-03-22
    • 2011-10-13
    相关资源
    最近更新 更多