我目前有一个使用 Microsoft SQL Server 后端的 Java Web 应用程序。数据库迁移目前由 sqlcmd 手动完成,它使用 :r 命令来引用我们的存储过程和 View 的脚本文件。
这样每个存储过程都有自己的文件“proc_someprocedure.sql”,迁移是通过升级脚本“6.1upgrade.sql”完成的,该脚本引用 proc 文件以删除并在当前版本中重新创建它。
我们希望迁移到 Flyway,并让应用程序在部署时迁移其自己的数据库。但是,我找不到任何简单的方法来为每个存储过程维护单个源代码文件。如果存储过程发生更改,我需要在版本控制中对 V_6_1__change.sql 文件和 proc_someprocedure.sql 文件进行更改。
我试图避免复制/粘贴 SQL 代码,因为它过去一直困扰着我们。其他人如何处理这种情况?
最佳答案
从 3.0 开始,对此没有一流的支持。然而,有 3 种方法可以实现这一目标:
- 使用自定义的 MigrationResolver,它可以连接到您使用的任何源代码控制并以这种方式检测更改
- 使用 FlywayCallback 通过 afterMigrate 重新创建所有存储过程
- 在单独的架构中使用单独的 Flyway 实例,并将 cleanOnValidationError 设置为 true。每次校验和更改时,架构都会被清理,并且由该 Flyway 实例管理的所有迁移都将重新运行
关于java - 使用flywaydb时如何对存储过程进行版本控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23416130/