Flyway 最佳实践:一个大型迁移脚本与多个增量脚本

     2023-03-28     37

关键词:

【中文标题】Flyway 最佳实践:一个大型迁移脚本与多个增量脚本【英文标题】:Flyway best practice: one large migration script vs many incremental ones 【发布时间】:2021-12-01 20:37:37 【问题描述】:

我的任务是使用flyway将一些新的迁移脚本添加到现有应用程序中,大致如下:

    为一项逻辑任务更新一张表中的 4 条记录(JIRA 票证 #1) 为另一个逻辑任务更新同一个表中的另一个记录(JIRA 票证 #2) 为(JIRA 票证 #2)更新另一个表中的记录

有两种选择:

    将更改 3 保存在单独的迁移脚本中。 将所有更改集中在一个包含所有内容的大型脚本中。

为了逻辑描述,我喜欢将这些更改保留在 3 个单独的迁移脚本中,以防任何这些脚本执行失败,我不必创建另一个大型更正脚本来修复失败,因为它可能会变得非常混乱。

另一方面,这 3 个任务都属于同一个工作(更大的父 JIRA 任务)并一起投入生产。

有人可以分享他们关于最佳做法的经验和意见吗?请保留 3 个迁移脚本或将它们放在一起,如果可能的话,请说明每种方法的优缺点?

我找到了这篇文章,但它没有说明我的具体查询: https://dbabulletin.com/index.php/2018/03/29/best-practices-using-flyway-for-database-migrations/

【问题讨论】:

【参考方案1】:

这将是部分意见,所以我们只需要在 SO 和规则内处理它。

我绝对会把它分解成更小的脚本。这有两个原因。首先,当其中一组更改向南时(是的,可能不是,但如果),如果它在自己的脚本中,您可以更容易地将其与所有其他更改分开。当然,您仍然可以对更改进行分组,使其全部为 7.1、7.2、7.3(或其他),但如果已经拆开,那么拆开东西会更容易。

其次,如果您遇到这样一种情况,即通过挑选樱桃进行零碎部署,您还需要将脚本分解为单独的更改集。原因同上。

这并不是说我永远只做个别的改变。但是你列出的那种完全不同的变化,那些彼此没有直接关系的变化,实际上可以分开,那些,我会分开。

部分是意见,部分是对事物如何分崩离析或需要改变的理解。我希望这是 SO 规则中的答案。

【讨论】:

【参考方案2】:

这更像是一个铁的事实,但我通常遇到的“最佳实践”是将脚本保留为功能或依赖命令。这样,如果某个命令中断了迁移,您不会损失太多进度,并且可以帮助您查明问题所在。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

实战flyway迁移指南最佳实践(代码片段)

...,数据库中的表版本也可以做到版本控制,本文讲解通过flyway的方式来管理数据库版本变动。本文首发个人技术博客:http://nullpointer.pw/flyway-best-practice.html项目痛点一个项 查看详情

如何将 Flyway 迁移与单个架构和多个项目一起使用

】如何将Flyway迁移与单个架构和多个项目一起使用【英文标题】:HowcaniuseFlywaymigrationwithsingleschemaandmultipleprojects【发布时间】:2018-09-2002:12:23【问题描述】:如何管理处理相同数据库架构的多个项目。每个项目中的Flyway迁移脚本... 查看详情

Flyway 数据库迁移到多个模式

】Flyway数据库迁移到多个模式【英文标题】:Flywaydatabasemigrationtomultipleschemas【发布时间】:2015-02-1705:23:24【问题描述】:我已经为我的多租户应用程序设置了一个迁移脚本。问题是。它只为我在参数上指定的第一个租户/模式生... 查看详情

Flyway - 多个 git 分支上的 SQL 迁移脚本版本

】Flyway-多个git分支上的SQL迁移脚本版本【英文标题】:Flyway-SQLmigration-scriptsversionsonmultiplegitbranches【发布时间】:2018-05-2507:45:34【问题描述】:在项目中,我们使用Flyway迁移工具来开发db架构以及这些脚本的git历史记录。想法是... 查看详情

java基础学习总结(183)——flyway在项目中迁移数据实践

...,数据库中的表版本也可以做到版本控制,本文讲解通过flyway的方式来管理数据库版本变动。一个项目单个环境迭代开发的过程中,对于数据库表的修改DDL,可以通过版本控制工具一起进行控制。只需要在项目上线之前,人工执... 查看详情

java基础学习总结(183)——flyway在项目中迁移数据实践

...,数据库中的表版本也可以做到版本控制,本文讲解通过flyway的方式来管理数据库版本变动。一个项目单个环境迭代开发的过程中,对于数据库表的修改DDL,可以通过版本控制工具一起进行控制。只需要在项目上线之前,人工执... 查看详情

Flyway 3.1 数据库迁移多个模式 - Oracle 11g

】Flyway3.1数据库迁移多个模式-Oracle11g【英文标题】:Flyway3.1DBmigrationMultipleschemas-Oracle11g【发布时间】:2015-05-0421:01:31【问题描述】:目前,我们能够在oracle11g上一次在一个模式中部署数据库脚本(ddl、dml、视图/包)。(1)是否可... 查看详情

有啥方法可以“压缩” Flyway 迁移?

】有啥方法可以“压缩”Flyway迁移?【英文标题】:Anywayto"compress"Flywaymigrations?有什么方法可以“压缩”Flyway迁移?【发布时间】:2016-02-0404:42:56【问题描述】:我们正在使用Flyway迁移数据库架构,我们已经有100多个迁移... 查看详情

FlyWay 迁移策略

】FlyWay迁移策略【英文标题】:FlyWaymigrationstrategy【发布时间】:2018-05-1019:31:22【问题描述】:目前在我们使用FlyWay的项目中,我们有多个环境,例如:dev(开发人员本地),QA人员的多个应用程序实例,登台......我们有这样的... 查看详情

FlyWay 迁移脚本

】FlyWay迁移脚本【英文标题】:FlyWaymigratescripts【发布时间】:2018-02-2811:55:44【问题描述】:你能帮忙解释为什么flyway不能安装脚本吗?我的架构是空的,只有一个创建flyway的表。但它也是空的。如何正确配置FlyWay?我的脚本有以... 查看详情

使用 Flyway 在多个模式上运行 SQL 脚本

】使用Flyway在多个模式上运行SQL脚本【英文标题】:RunSQLscriptonmultipleschemaswithFlyway【发布时间】:2021-12-0202:45:45【问题描述】:我正在使用Flyway迁移数据库。我有一个SQL脚本文件,它需要在单个数据库上托管的多个模式上运行。... 查看详情

Laravel 每次迁移多个表

...46:06【问题描述】:我是Laravel的新手,所以对这个框架的最佳实践有点陌生。我正在尝试了解使用migrations创建数据库的最佳方法。我在网上找到的几个例子,包括Laravel文档here和here,似乎是指只处理一个表的迁移脚本。我正在... 查看详情

flyway:每次迁移后运行的通用脚本

】flyway:每次迁移后运行的通用脚本【英文标题】:flyway:commonscripttorunaftereverymigration【发布时间】:2013-01-2023:46:10【问题描述】:我有一个通用的清理脚本,我想在每次迁移后运行它。有没有一种好方法可以在每次迁移后运行... 查看详情

Flyway 与 Spring Boot 的集成不会在嵌入式 H2 数据库上执行迁移脚本

】Flyway与SpringBoot的集成不会在嵌入式H2数据库上执行迁移脚本【英文标题】:Flywayintegrationwithspringbootdoesn\'texecutemigrationscriptsonembeddedH2database【发布时间】:2018-10-1708:14:30【问题描述】:我正在尝试使用Flyway在SpringBoot应用程序中... 查看详情

Flyway 未接收 Java 迁移

】Flyway未接收Java迁移【英文标题】:JavaMigrationsnotbeingpickedupbyFlyway【发布时间】:2017-12-2320:57:36【问题描述】:我正在尝试使用Flyway运行我的数据库迁移脚本。我有两个SQL脚本和一个试图运行的Java脚本。当我运行./gradlewflywayMigra... 查看详情

Flyway 发现多个版本的迁移

】Flyway发现多个版本的迁移【英文标题】:FlywayFoundmorethanonemigrationwithversion【发布时间】:2020-01-1711:11:09【问题描述】:我有两个sql文件,一个用于oracle,一个用于mySql数据库。路径如下db/migration/mysql/V1_1_migration.sqldb/migration/oracl... 查看详情

使用 Flyway 实现“特定于数据库”的 sql 脚本的最佳方式

】使用Flyway实现“特定于数据库”的sql脚本的最佳方式【英文标题】:Bestwayfor"databasespecific"sqlscriptswithFlyway【发布时间】:2012-11-1613:54:52【问题描述】:我开始在我当前的项目中使用Flyway进行数据库迁移,我非常喜欢它... 查看详情

如何从 IntelliJ IDEA 中的模型类生成 Flyway 迁移脚本?

】如何从IntelliJIDEA中的模型类生成Flyway迁移脚本?【英文标题】:HowtogenerateFlywaymigrationscriptfrommodelclassinIntelliJIDEA?【发布时间】:2021-08-3002:05:16【问题描述】:在Java应用程序中,我有一个模型类,我想从中生成Flyway迁移脚本。... 查看详情