当前位置: 首页 > 知识库问答 >
问题:

Flyway:在单个事务中运行多个迁移

海岳
2023-03-14

我可以强制Flyway在一个事务中运行所有尚未应用的迁移,而不是让每个迁移都是自己的事务吗?

在开发环境中这不是一个问题,但是在生产环境中,您可能会执行从一个更新到下一个更新的多个迁移,其中一个迁移失败将使数据库处于“半迁移”状态,其中一些迁移已提交,而一些未提交--这是一件非常糟糕的事情。

一种解决方法是简单地将所需的所有SQL塞进一个文件中,但这样做存在一些问题:

共有1个答案

元叶秋
2023-03-14

没有现成的功能。不过这是一个很好的问题,我敢打赌,由于Flyway提供了每次迁移的事务边界,所以我已经考虑过了--希望Axel Fontaine会插话说明导致这不是一个特性的技术/设计考虑。

FAQ中有关于降级/失败的内容。该政策可归结为:

保持数据库与当前在生产中部署的所有版本的代码之间的向下兼容....有一个经过良好测试的备份和恢复策略。

 类似资料:
  • 问题内容: 如何管理处理同一数据库模式的多个项目。如果每个项目中的Flyway迁移脚本被另一个项目修改,则不允许启动。 例如: 我有一个带有FlywayInitializer类的Spring Boot ProjectX。 我有一个子模块Project Y,也有他自己的FlywayInitializer类 项目结构: 如何在Flyway中为Project X和Y使用相同的架构名称“ schema1”

  • 我有一个关于Flyway DB迁移的问题。如何管理处理同一数据库模式的多个项目(微服务)。如果每个项目中的Flyway移植脚本被其他项目修改,则不允许启动该脚本。他们是否有相关的文档或最佳实践?

  • 如何管理处理相同数据库模式的多个项目。如果被另一个项目修改,每个项目中的Flyway迁移脚本不允许启动。 例如: 我有一个带有FlywayInitializer类的spring boot项目X。 我有一个子模块Y,还有他自己的FlywayInitializer类 项目结构: 如何对项目X和Y使用与Flyway相同的schemaname“schema1”? 编辑:谢谢@jesper\u bk对我的帮

  • 我对Flyway完全陌生,但我正在尝试使用https://github.com/flyway/flyway-docker描述的docker-compose flyway mysql安排来迁移许多相同的测试数据库 据我所知,< code>migrate命令可以在它的< code>-schemas参数中接受多个模式,但是它似乎只将实际的SQL迁移应用于列表中的第一个模式。 例如,当我使用< code>

  • 我正在使用spring boot和spring-data-jpa开发一个应用程序,其中我有一个方法,它可以做两件事: 下面是你的方法:

  • 是否可以使用Hibernate Spring对以下内容进行建模。 公开会议 我使用Spring TransactionTemplate,它同时执行会话事务生存期范围。 原因是,有时我在业务流程中有几个阶段,我希望在每个阶段完成后提交。但是,我希望继续使用相同的持久对象。如果每个事务都有一个单独的会话,则会出现暂时/分离的异常,因为原始会话已关闭。 这有可能吗?