- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们通过 Java API 使用 Flyway 4 针对 MySQL 5.6(不支持事务性 DDL)。我们很少遇到迁移失败的情况,有时是逻辑错误,有时是因为有人破坏了数据库,导致事情不在正确的状态。
所以我想知道,在这种情况下,我们是否应该从 schema_version
中删除行并让迁移重新运行,同时修复迁移或修复数据库?我们通常在迁移之前运行修复以修复任何失败的迁移,然后添加新的迁移。
另请参阅:Should I be worried about creating idempotent migrations while using Flyway?
最佳答案
过去几年我一直在使用 Flyway 3,最近才升级到 4。到目前为止,它已成功管理大约 30 个不同的项目,并且非常适合交付管道。
在那两年中,我们确实经历了几次迁移,这些迁移是从我们希望从历史中删除的开发人员机器中实现的。在这些情况下,从 schema_version
中删除一行通常是答案 - 它比 repair
更快,过程密集度更低在我们的情况下风险较小。话虽这么说,它只在开发/测试环境方面做到了 - 因此一直存在一个非生产环境,它只接收工作迁移而没有失败/不需要的迁移。
我们的目标绝对是让失败的迁移成为构建时的问题。因此,迁移版本得到验证,迁移本身被执行,组件针对迁移后的数据库运行,作为组件构建的一部分。我想说这在很大程度上导致了我们在处理如此大量的迁移管理项目时出现的罕见问题。
不记得我是在哪里读到它的,是否是在 Flyway 的上下文中读到的,但它与 The price we pay for this kind of automation is discipline
类似。 - 所以听到“有人手动处理数据库”之类的话对我来说绝对是一个危险信号。
总之……
我认为最大程度地减少失败的机会是关键。但是,当确实发生故障时,将您的策略定义为满足可接受的风险水平是您能做的最好的事情 - repair
并删除 schema_version
两者都有其缺点。
关于flyway - 从 schema_version 中删除行是正确的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39492836/
我用 test/test 作为用户/密码执行 flyway:init 并得到以下输出: [INFO] Creating schema "MY_SCHEMA" ... [INFO] Creating M
我们通过 Java API 使用 Flyway 4 针对 MySQL 5.6(不支持事务性 DDL)。我们很少遇到迁移失败的情况,有时是逻辑错误,有时是因为有人破坏了数据库,导致事情不在正确的状态。
在我的 Java 应用程序中,我设置了: flyway.setBaselineVersionAsString("7") 然而,在还没有 schema_version 表的全新数据库上,Flyway 不
当我第一次在集群上运行 Flyway 迁移时,我发现 Flyway 自动生成表 schema_version 是使用 innodb 引擎而不是ndbcluster 引擎。因此,schema_versi
我有两个微服务(考虑 A 和 B)使用相同的数据库架构和单独的架构版本表 schema_version_a 、schema_version_b。 每当微服务 A 创建 schema_version_a
我们使用 Flyway Gradle 插件离线进行迁移(即我们在系统停机时迁移)。我们最近升级到 Flyway 5.0.7,现在我们看到了这个关于迁移的警告: 找不到架构历史记录表 XXXXXXX .
我在使用新迁移运行我的 Spring Boot 应用程序时遇到此错误。到目前为止,它已经完成了 10 次迁移。该字段确实没有默认值。不需要默认值,因为 Flyway 应该在该字段中插入值 11。 Ca
我是一名优秀的程序员,十分优秀!