最佳实践:使用后如何修改flyway迁移脚本

     2023-03-28     67

关键词:

【中文标题】最佳实践:使用后如何修改flyway迁移脚本【英文标题】:Best practice: How to modify flyway migration script after it has been used 【发布时间】:2016-05-31 01:37:40 【问题描述】:

我正在寻找以下案例的建议。

我在生产环境中设置了 flyway 迁移脚本。在每次部署时,数据库都会迁移到当前版本。 我已经创建了几个已应用于生产数据库的迁移脚本。

最近我升级了我的开发 MySQL 工具,其中包括关于使用已弃用函数的警告和其他警告。这些警告未在旧版本中显示。 当然,我想修复这些警告,尤其是在未来版本的数据库不再支持已弃用功能的情况下。 但是包含警告的迁移已经部署和使用。如果我更改其中一个脚本,则会出现飞行警告:

ERROR: Validate failed. Migration Checksum mismatch for migration 2.0
-> Applied to database : 1778293504
-> Resolved locally    : 1831545539

我可以更改存储在数据库中的校验和以进行迁移,但这听起来不是一个“好”的方法。 它已经被使用之后更改迁移脚本的常用方法/最佳实践是什么?

【问题讨论】:

【参考方案1】:

第一条规则是不要。

第二个是非常小心地使用 Flyway.repair() 将数据库中的校验和与磁盘上的校验和重新对齐。

【讨论】:

好的,这就是我的预期:D 感谢您的时间和“repair()”的提示! 我们在更新 db 后遇到了同样的问题 - 新版本与一些旧脚本不兼容(旧脚本有未引用的关键字,这对于旧版本的 db 可以,但对于新版本则不行)。解决方案是使用飞路修复。【参考方案2】:

我完全同意你不应该这样做的事实。

但如果您确实需要,您可以更改 flyway 配置并将 validateOnMigrate 布尔值设置为 false。

这是链接:https://flywaydb.org/documentation/commandline/migrate#validateOnMigrate

【讨论】:

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

项目在多环境迭代开发过程中,数据库的表结构不断变更,在部署时,往往会出现数据库表结构未及时变更导致出现问题,耗费在表结构上的时间相当多,上线过程持续痛苦,代码有GIT/SVN来控制,数据库中的表版本也可以做到... 查看详情

基于 State/BaselineMigration 脚本的迁移后 FlyWay 迁移出错

...sedmigration【发布时间】:2021-11-2220:28:14【问题描述】:我使用试用密钥尝试了State/BaselineMigration功能。https://flywaydb.org/documentati 查看详情

使用flyway迁移脚本时如何从文件中填写表格

】使用flyway迁移脚本时如何从文件中填写表格【英文标题】:HowcanIfillinatablefromafilewhenusingflywaymigrationscripts【发布时间】:2021-11-2011:23:56【问题描述】:我有脚本/*TheextensionisusedtogenerateUUID*/CREATEEXTENSIONIFNOTEXISTS"uuid-ossp";--auto-generat... 查看详情

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

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

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

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

Flyway 的迁移前和迁移后脚本

】Flyway的迁移前和迁移后脚本【英文标题】:Pre-andPost-migrationscriptsforFlyway【发布时间】:2011-11-0509:11:26【问题描述】:我正在寻找一种在迁移前后执行挂钩脚本的方法。我有一堆视图和存储过程,希望这个过程是:删除所有视... 查看详情

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

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

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

...Flyway迁移脚本。有一个名为JPABuddy的有用插件,但我无法使用它生成迁移脚本(即使我删除了相应的表,它也只检 查看详情

如何实现 flyway-play Java 迁移

...】:2016-09-2409:59:58【问题描述】:flyway-play(3.0.0)可以使用Java迁移脚本吗?SQL迁移工作正常,但是当我将示例Java迁移脚本放入app\\db\\migration\\V1_0_1__PopulateDatabase.java或放入与SQL脚本相同的目 查看详情

如何使用 flyway 跳过特定的迁移?

】如何使用flyway跳过特定的迁移?【英文标题】:Howtoskipaspecificmigrationwithflyway?【发布时间】:2015-05-1417:49:41【问题描述】:我正在使用带有gradle的flyway,我已经在数据库控制台中手动运行了其中一个迁移,我想运行flyway,但告... 查看详情

如何创建脚本或 Flyway 可以配置为每次使用 SQL 回调调用它?

】如何创建脚本或Flyway可以配置为每次使用SQL回调调用它?【英文标题】:HowtocreatescriptorFlywaycanbeconfiguredtocalliteverytimeusingaSQLcallback?【发布时间】:2021-11-1518:32:45【问题描述】:?【问题讨论】:【参考方案1】:flyway已经有很... 查看详情

FlyWay 迁移脚本

...的架构是空的,只有一个创建flyway的表。但它也是空的。如何正确配置FlyWay?我的脚本有以下形式V1__20170918_Initial_structure.sql18:43:30,773INFO[stdout](ServerServiceThr 查看详情

手动更改表中的varchar大小后如何同步Flyway迁移文件?

...】:2021-01-1605:51:01【问题描述】:在学习Spring-boot时,我使用Flyway迁移文件在我的mysql数据库中创建表。然后过了一段时间,我手动更改了这些表中的一些var 查看详情

使用个人用户帐户执行 flyway 迁移

】使用个人用户帐户执行flyway迁移【英文标题】:Executeflywaymigrationsusingindividualuseraccounts【发布时间】:2012-10-1819:42:16【问题描述】:作为我们将SQL脚本迁移到flyway迁移工作的一部分,我们遇到了一些大量使用OraclesqlplusCONNECTstate... 查看详情

使用 Flyway 迁移创建用户

.../编辑用户并更改他们的登录密码?这是一种公认​​的最佳做法吗?【问题讨论】:【参考方案1】:根据Flyway文档:基于SQL的迁移通常用于DDL更改(TABLES、VIEW 查看详情

如何控制flyway可重复脚本的执行顺序

】如何控制flyway可重复脚本的执行顺序【英文标题】:Howtocontrolexecutionorderofflywayrepeatablescripts【发布时间】:2016-07-1420:25:18【问题描述】:有没有办法控制flyway中可重复迁移脚本的执行顺序?我想在校验和更改的所有其他可重复... 查看详情

flyway迁移后运行data.sql文件

】flyway迁移后运行data.sql文件【英文标题】:Rundata.sqlfileafterflywaymigration【发布时间】:2020-01-0215:44:24【问题描述】:在我的SpringBoot项目中,我通过flyway维护sql/query版本。出于某种原因,我需要加载一些我不想在flyway版本上添加... 查看详情

Flyway 未接收 Java 迁移

...【发布时间】:2017-12-2320:57:36【问题描述】:我正在尝试使用Flyway运行我的数据库迁移脚本。我有两个SQL脚本和一个试图运行的Java脚本。当我运行./gradlewflywayMigrate或gradleflywayMigrate时,它​​只会选择SQL脚本,而不是Java脚本。... 查看详情