使用flywaydb时如何对存储过程进行版本控制?

2024-01-26

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

这样,每个存储过程都有自己的文件“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 实例管理的所有迁移都将重新运行
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用flywaydb时如何对存储过程进行版本控制? 的相关文章

随机推荐

  • Django - NoReverseMatch 位于 /accounts/password_reset/

    我正在尝试使用内置的 Django 密码重置 纵观整个Django 文档 https docs djangoproject com en 1 9 topics auth default 据我所知 它基本上只涉及添加一些 URLurls py
  • Vim 中保留大小写的替代品

    Can this https stackoverflow com questions 367052 case preserving find replace in visual studio可以在 Vim 中完成吗 我的意思是 搜索 Bad
  • 在 Python 中将一列日期时间转换为纪元

    我目前在使用 Python 时遇到了问题 我有一个 Pandas DataFrame 其中一列是带有日期的字符串 格式为 Y m d H m 00 000 例如 2011 04 24 01 30 00 000 我需要将整列转换为整数 我尝试
  • Mac OSX - Xcode 安装目录

    Xcode 完成构建后 有没有办法让它将可执行文件复制到特定目录 站点 cgi bin 我有目标Installation Directory设置到正确的文件夹 使用skip installation 未经检查的 但没有运气 我缺少什么吗 检
  • Python 在处理我的 JSON 文件时出现什么问题?

    我尝试使用 python 从 json 文件中删除第一个键和值 在运行程序时 我遇到了错误 错误如下 import json with open testing as json data data json load json data f
  • IE8拉伸表格单元格高度

    我有一个基于表格的页面布局 尽管我想用更现代的标记来重组它 但这不是一个选择 该布局使用一个跨越两行的单元格作为右侧的侧边栏 而左上角的单元格包含一个简单的标题 左下角的单元格包含页面的主要内容 左上角单元格的高度固定 底部单元格和右侧单元
  • 具有动态高度的 div 的 CSS 线性渐变

    我需要创建一个像这样的线性渐变梯度要求 https i stack imgur com yzaXn png 我试图用这样的CSS来实现它 background linear gradient 60deg rgba 255 183 107 1
  • 将每第 n 行命令输出分组为 CSV 格式

    我正在寻找一种解析多行命令输出的方法 将每个倍数分组nth行和格式为 CSV 格式 cat file ABC 123 62p4 123 DEF 456 62p4 456 我需要将 o p 分组在每个3rd行 并且是 3 的倍数 即第 3 第
  • 如何计算位图文件大小?

    如何查找 50 x 50 RGB 彩色图像的字节大小 如果将上面的图像保存为 BMP 文件 标题大小为 54 字节 则该 BMP 文件的总大小是多少 如何知道BMP文件中每个字节的内容 那么如何知道它的十六进制值呢 假设您指的是内存需求 m
  • lambda 与 tkinter 的工作方式很奇怪

    我正在尝试使用 Tkinter 制作一个计算器 我一直在尝试清理一下代码 但遇到了障碍 创建按钮时 我使用以下代码 Button self text 1 command lambda self addkey 1 width self def
  • paddingStart/Left 和 paddingEnd/Right

    在最近的代码编写过程中 我看到单个元素仅包含 paddingLeft Right 仅包含 paddingStart End 以及两者 似乎找不到任何更好的内容以及原因 有人有任何见解 何时使用其中之一或两者或两者 您需要新的开始 结束属性来
  • 有没有办法可视化整个 SVN 存储库?

    我有一个 SVN 存储库 里面有多个项目 每个项目下面都有一个标签 分支 主干结构 如下所示 项目1 trunk tags branches 项目2 trunk tags branches 约 40 个项目都如此 我想做的是清理可能存在的任
  • PHP:如何检查用户是否已经登录,否则重定向到登录页面

    我是 PHP 新手 正在努力解决以下问题 我有一个页面 我想在让某人查看网站内容之前检查某人是否是注册用户 所以我的想法是在我的头文件中 通过所有单页引用该文件 require once includes header php 我可以检查并
  • Django 浮点字段输入

    创建接受浮点数并具有与 NumberInput 相同功能的 django 表单字段的最佳方法是什么 我的意思是 具有相同功能的是 django 的 NumberInput 在输入旁边有箭头 可以增加或减少数字 并且它还接受 min valu
  • std::vector 比普通数组慢很多吗?

    我一直认为这是普遍智慧std vector是 作为数组实现的 等等等等 今天下去测试了一下 好像不是这样的 这是一些测试结果 UseArray completed in 2 619 seconds UseVector completed i
  • 默认 Spring Security 重定向到 favicon

    我正在使用 Spring Security 3 1 我在授权后重定向时遇到问题 它重定向到 favicon 404 错误 添加role anonymous因为 favicon 没有帮助
  • 使用额外信息进行 Bean 验证

    我正在尝试创建一个UniqueName注释作为创建项目 api 的 cutomize bean 验证注释 PostMapping users userId projects public ResponseEntity createNewPr
  • 使用 ASP.NET 在 Windows Azure Blob 存储上设置 CORS

    我正在尝试在我的 Windows Azure blob 存储帐户上设置 CORS 属性 我正在使用 ASP NET 服务器发送 PUT 请求 服务器正在发回禁止响应 表示 服务器无法验证请求 确保授权标头的值格式正确 包括签名 所以它一定是
  • Kotlin Gradle 插件:apiVersion 与 languageVersion

    Kotlin Gradle 插件包含compileKotlin可以通过以下方式配置的任务apiVersion and languageVersion参数 doc https kotlinlang org docs reference usi
  • 使用flywaydb时如何对存储过程进行版本控制?

    我目前有一个使用 Microsoft SQL Server 后端的 Java Web 应用程序 数据库迁移当前由 sqlcmd 手动完成 它使用 r 命令来引用存储过程和视图的脚本文件 这样 每个存储过程都有自己的文件 proc somep