我目前正在研究Flyway作为Liquibase的替代方案,但在文档中无法找到以下问题的答案:
假设在生产环境中部署后发现迁移X
包含错误。回想起来,X
不应该按原样执行,但已经太晚了。但是,我们想用固定版本的X
替换迁移X
,这样从头开始填充的数据库就不会遭受相同的错误。
在 Liquibase 中,您将修复原始变更集并使用
如果这个坏的更改已经达到生产阶段,那么隐藏它有什么意义呢?每次在空数据库上重放都很昂贵吗(我假设CI运行)?在已经包含该迁移的情况下创建一个新的数据库基线。
根据混乱的程度,你也可以
尽管这违反了Flyway的API,但以下方法对我们很有效:
在Validate之前编写<code>。sql</code>,它修复校验和以匹配预期值,因此当Flyway实际验证校验和时,一切看起来都很好。
例如:
-- The script xyz/V03_201808230839__Faulty_migration.sql was modified to fix a critical bug.
-- However, at this point there were already production systems with the old migration file.
-- On these systems, no additional statements need to be executed to reflect the change,
-- BUT we need to repair the Flyway checksum to match the expected value during the 'validate' command.
UPDATE schema_version
SET checksum = -842223670
WHERE (version, checksum) = ('03.201808230839', -861395806);
这样做的优点是只针对一个特定的迁移,这与 Flyway 的修复
命令不同。
我需要重命名一个Flyway迁移文件。我已经在本地数据库上应用了迁移。 如何删除或重置本地postgres数据库,使其不存在Flyway迁移异常?
我们中的两个人在不同的GIT分支中制作了一个迁移脚本。现在,我已经拉动了源开发分支,并更正了 GIT 合并问题,并将我的迁移脚本重命名为最后一个。因此,数据库的新初始化和从开发分支的版本迁移数据库将是可以的。 然而,我的本地测试数据库中有很多数据,所以我手动应用了我在GIT中引入的新迁移脚本。然而,我不能让flyway认为,一切都很好。 那么,我如何才能伪造迁移? 当我尝试迁移时,我收到以下错误:
我对Flyway完全陌生,但我正在尝试使用https://github.com/flyway/flyway-docker描述的docker-compose flyway mysql安排来迁移许多相同的测试数据库 据我所知,< code>migrate命令可以在它的< code>-schemas参数中接受多个模式,但是它似乎只将实际的SQL迁移应用于列表中的第一个模式。 例如,当我使用< code>
问题内容: MyBatis迁移将每个SQL文件分为两部分: 一种用于向前迁移一个版本 一种用于迁移回一个版本 如何使用Flyway回滚版本? 问题答案: 尽管Flyway支持回滚(仅作为商业功能),但不鼓励使用它: https://flywaydb.org/documentation/command/undo 尽管撤消迁移的想法很好,但不幸的是,有时它在实践中会崩溃。一旦您进行了破坏性的更改(删除
我想知道如何将应用程序/设备通知,如果GCM服务器决定刷新之前从GCM服务器检索的应用程序的注册ID。目前,我保存第一个检索到的注册ID,并将其保存在数据库中,并将此注册ID发送到应用服务器。所以,从下一次应用程序将不会说话的GCM服务器。在这种情况下,应用程序永远不会知道注册ID是否被GCM服务器更改。谷歌文件提出了一些处理此案的建议,但没有提到应该采取什么步骤。引用谷歌- 虽然是com。谷歌。
目前,我们正在使用Flyway 2.0.3,并最终完成了升级到Flyway最新版本的功课。 我知道首先进入2.3.0的步骤。通过该步骤,我们调整了Flyway的版本模式。 现在我正在寻找一种使用以下命名模式迁移我们的sql迁移文件的方法: 随着对非数字字符的支持的放弃,我收到了已知的错误 有没有针对旧版本的最佳实践迁移指南 欢迎任何建议。谢谢, J0er9 更新:按照建议重命名迁移文件并不能解决问