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

使用flyway重新运行可重复迁移,无需更改校验和

仲孙鸣
2023-03-14

所以我有几个可重复的迁移。

  1. R\u首先。sql创建一个视图(删除它

现在假设我修改了第一次迁移,结果视图不再包含第二次迁移使用的列。Flyway将愉快地重新运行第一次迁移,第一个视图将被重新创建,第二个视图将由于级联选项而被删除。

在此之后,我希望第二次(依赖的)迁移也会运行,并且会抛出一个错误(因为它使用了一个不再存在的列)。

这样可能吗?

以某种方式强制flyway检查现有迁移的结果是否不再存在?或者可能存在类似依赖迁移的情况?如果其中一个发生了更改,则其他的可以标记为重新运行,尽管具有相同的校验和。或者可能使用afterMigrate来破解某些东西?但不显式复制粘贴相同的create if not exists sql。

共有2个答案

袁凌
2023-03-14

这篇文章描述了你可能感兴趣的想法。

R\u秒的速度。sql您可以将DDL放入PLSQL,在PLSQL中首先检查在R\u中创建的视图中存在哪些列。sql并有条件地重新创建第二个视图。

在我的项目中,我有几个视图与SELECT a。*from我要走这条路。

慕容烨
2023-03-14

呵呵,当然,在发布了这个之后,我发现你可以使用CREATE OR REPLACE,而不是删除然后创建。如果您试图删除在另一个视图中使用的列,这实际上会引发一个错误。

 类似资料:
  • Flyway 4.2.0中的可重复Java迁移存在问题。 例如,我编写了一个可重复的Java迁移,它为每个具有特定列的表创建一个触发器。此迁移的ChecksumProvider计算缺少触发器的表的连接名称的哈希代码。 > 当表列表不为空时,hashcode不同于零(将其命名为xxx),并且对于每个表,都会向数据库添加一个合适的触发器。在这种情况下,hascode xxx被写入“schema_ver

  • 我们正在尝试将迁移作为.sql文件置于版本控制之下。开发人员将编写一个vn__*.sql文件,提交到版本控制,并且每5分钟运行一次的作业将自动迁移到开发和测试数据库。一旦更改被证明没有引起问题,其他人就会运行一个手动作业来在生产上运行迁移。 我的问题: 我有一个演示迁移,创建了几个表。我将v4__demotable.sql检查到PC上的版本控制中。 阅读文档时,开发人员似乎建议我应该创建一个新的v

  • 在使用可重复迁移时,我观察到一些奇怪的飞行路线行为。文件指出: 在一次迁移运行中,可重复迁移始终在所有挂起的版本化迁移执行完毕后最后应用。 但在我的例子中,可重复迁移(正在重新创建一个DB视图)似乎失败了,因为它是在版本化迁移之前执行的。 迁移前的Flyway信息数据:

  • 报价飞行路线文件https://flywaydb.org/documentation/migration/repeatable : 可重复迁移没有版本。相反,每次校验和更改时,都会(重新)应用它们。 这对于管理数据库对象非常有用,这些对象的定义可以简单地在版本控制中的单个文件中维护。 在一次迁移运行中,可重复迁移始终在所有挂起的版本化迁移执行完毕后最后应用。可重复迁移按其描述的顺序应用。 这听起来

  • 在Spring启动应用程序中,我们在db.migrations资源文件夹中设置了版本化迁移 V1_0__create_table.sql V1_1__apply_roles.sql R__create_stored_proc.sql 版本化迁移(V1\u 0和V1\u 1)在应用程序启动时运行/验证,但似乎根本不会触发可重复迁移(R\u)。 我们有一个后迁移。sql,这似乎是触发的。 有人能帮我理

  • 有人能帮我一些建议我可以尝试吗?该应用程序在没有Spring Boot的情况下使用Liquibase 3.4.1运行良好。 下面是我的相关application.yml配置: