Database migration 如何处理不断变化的飞行路线迁移?
我目前正在调查,作为替代,但无法在文件中找到以下问题的答案: 假设在生产中部署后,发现迁移Database migration 如何处理不断变化的飞行路线迁移?,database-migration,flyway,Database Migration,Flyway,我目前正在调查,作为替代,但无法在文件中找到以下问题的答案: 假设在生产中部署后,发现迁移X包含错误。回想起来,X本不应该按原样执行,但已经太晚了。但是,我们希望将迁移X替换为固定版本X',这样从头开始填充的数据库就不会出现相同的错误 在Liquibase中,您将修复原始变更集,并使用标记通知Liquibase该变更是有意进行的。Flyway中的是否有挂件,或者是否有其他机制可以实现同样的效果?取决于混乱的程度,您也可以 只需进行后续迁移即可更正(在新列名中键入错误,…) 如果这不是一个选项,
X
包含错误。回想起来,X
本不应该按原样执行,但已经太晚了。但是,我们希望将迁移X
替换为固定版本X'
,这样从头开始填充的数据库就不会出现相同的错误
在Liquibase中,您将修复原始变更集,并使用
标记通知Liquibase该变更是有意进行的。Flyway中的
是否有挂件,或者是否有其他机制可以实现同样的效果?取决于混乱的程度,您也可以
- 只需进行后续迁移即可更正(在新列名中键入错误,…)
- 如果这不是一个选项,则必须手动修复迁移和DB,并发出Flyway.repair()以重新对齐校验和
,修复校验和以匹配预期值,这样当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的repair
命令不同,这具有只针对一个特定迁移的优点。我知道repair
命令,但它只是对所有迁移的给定运行禁用任何校验和验证,对吗?我正在寻找修复单个变更集。