根据 Flyway,原始 SQL 脚本现在无效

     2023-03-28     158

关键词:

【中文标题】根据 Flyway,原始 SQL 脚本现在无效【英文标题】:Original SQL script now invalid according to Flyway 【发布时间】:2021-11-03 07:18:47 【问题描述】:

我们有一个已经投入生产一段时间的 Spring Boot 应用程序。我们使用 Flyway 来管理数据库迁移。我刚刚从 2.4.5 升级到 Spring boot 2.5.4,随之升级到 Flyway 7.7.3。

在全新的本地环境中执行所有迁移时,迁移现在由于以下注释的语法问题而失败:

---*********************---
-- ** AUDITING TABLES ** --
---*********************---

我想这在已经执行此迁移的环境中不会成为问题,但是鉴于迁移时的校验和比较无法编辑原始文件,对于具有新数据库的新环境,解决此问题的最佳方法是什么?

我当前的版本控制只包括一个主要版本,即 V2、V3 等。我的想法是摆脱 V2(有问题的脚本)并引入 V2.1,这将是带有错误评论部分的 V2 的精确副本删除。然后我会将ignoreMissingMigrationsignoreIgnoredMigrations 都设置为true

这听起来像是解决这个问题的正确方法吗?

提前致谢。

【问题讨论】:

我应该提到我使用的是 MySQL 5.7。初步测试表明我在 OP 中提到的方法似乎有效。除非有人提出更好的选择,否则很可能会坚持使用这种方法。 你的 sql 文件的编码字符集是什么?较低版本的 flyway 没有问题,但是您所有的 sql 文件都应该是 UTF-8 或 US7ASCII 或者如果它不同,您必须自己指定编码:flywaydb.org/documentation/configuration/parameters/encoding 【参考方案1】:

更改脚本然后执行 flyway repair 将是理想的解决方案 - 这将纠正校验和。

假设此选项由于某种原因不可用(如果我们可以修复它,知道它是什么会很有帮助!),以上听起来是正确的。 ignoreMissingMigrations 表示您的旧部署不会反对 V2 不存在,ignoreIgnoredMigrations 表示他们不会反对 V2.1 存在。缺点是这些忽略在长期内可能无效 - 例如,它们不会捕捉到后来无意丢失的脚本。

【讨论】:

谢谢@Julia。你可能是对的,flyway repair 是要走的路。我确实遇到过,但它似乎是更具侵入性的选择,并且不能 100% 确定潜在的副作用。我还没有部署到任何实时环境,所以我有时间恢复到那个选项。

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

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

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

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

通过 Flyway 运行批处理脚本时出现 SQL 错误 586

】通过Flyway运行批处理脚本时出现SQL错误586【英文标题】:SQLError586WhenrunningbatchscriptsthroughFlyway【发布时间】:2018-11-1101:16:57【问题描述】:我正在通过flywaymigrate运行一些脚本,并且在每个脚本中都出现此错误。脚本本身会运行... 查看详情

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

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

如何处理无效的先前有效的 Flyway 迁移

】如何处理无效的先前有效的Flyway迁移【英文标题】:HowtodealwithpreviouslyvalidFlywaymigrationsthatbecameinvalid【发布时间】:2020-08-0511:20:18【问题描述】:我有一个SpringBoot应用程序,它使用Flyway在Postgres中进行数据库迁移。现在大约4岁... 查看详情

FlyWay 迁移脚本

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

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

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

Flyway 未接收 Java 迁移

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

序列和分区的版本化或可重复脚本 - Flyway?

】序列和分区的版本化或可重复脚本-Flyway?【英文标题】:VersionedorRepeatableScriptsforSequence&Partitions-Flyway?【发布时间】:2022-01-0322:14:07【问题描述】:我有用于创建分区函数和分区方案的SQL脚本。我希望通过flyway脚本来处理迁... 查看详情

通过 Flyway SQL 脚本为 PostgreSQL 中新创建的列设置不为空

】通过FlywaySQL脚本为PostgreSQL中新创建的列设置不为空【英文标题】:SetnotnullforanewlycreatedcolumninPostgreSQLviaFlywaySQLscript【发布时间】:2021-05-1303:28:55【问题描述】:我有一个Flyway迁移脚本(在我们的SpringBoot应用程序中):altertableb... 查看详情

Flyway 和 Jenkins 集成使用来自 github 路径的位置

】Flyway和Jenkins集成使用来自github路径的位置【英文标题】:FlywayandJenkinsintegrationusinglocationfromgithubpath【发布时间】:2020-11-1318:24:39【问题描述】:我想集成Jenkins和Flyway,我成功地做到了,但现在我不想从/sql路径中选择flyway脚本... 查看详情

DDL 和 DML 脚本的分离 - Flyway

】DDL和DML脚本的分离-Flyway【英文标题】:SegregationOfDDL&DMLScript-Flyway【发布时间】:2021-06-2606:05:56【问题描述】:我有Oracle的Flyway脚本(100+)列表。当我将我的包发布到客户环境时,为我们的SpringBoot应用程序创建的用户只允... 查看详情

flyway详解以及springboot集成flyway,数据库脚本版本管理(代码片段)

...能够安全可靠安全地升级数据库,同时也支持失败恢复。Flyway最核心的就是用于记录所有版本演化和状态的MetaData表,Flyway首次启动会创建默认名为SCHEMA_VERSION的元素局表。表中保存了版本,描述,要执行的sql脚本等;sql脚本的... 查看详情

程序开发数据库版本控制必备-flyway

...码的版本不匹配,导致上线后出现数据库不同步的问题。flyway就是对数据库版本进行控制的工具,可以对不同环境的sql进行迁移操作。flyway的官网:https://flywaydb.org/flyway会对每次执行过sql脚本保存到flyway_schema_history中,在数据库... 查看详情

flyway的快速入门教程(代码片段)

...ot项目,引入依赖2、在application.yml中添加相关配置3、根据配置文件中填写的脚本存放路径,创建文件夹4、添加需要运行的sql脚本。sql脚本的命名一定要规范,否则运行flyway会报错5、启动项目,通过flyway执行定义... 查看详情

flyway迁移后运行data.sql文件

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

占位符如何在 Flyway 中工作?

...们当前的SQL脚本包含诸如URL之类的占位符,这些占位符将根据环境(dev、qa、prod)具有不同的域名。具体来说,我们可能有类似的INSERT语句INSERTINTOFEEDVALUES(\'app.$env.token. 查看详情

flyway:即使 SQL 语句失败也强制迁移

】flyway:即使SQL语句失败也强制迁移【英文标题】:flyway:forcingmigrationsevenifaSQLstatementfailed【发布时间】:2012-05-1703:57:36【问题描述】:我为工作中的应用程序创建了一个flyway项目。事实证明,在我准备好flyway设置以进行测试之... 查看详情