团队,
我们已经为postgresql 11.x版本设置了工作的flyway docker镜像(flyway社区版版本6.x)。在将我们的postgresql版本升级到14.x之后,现在现有的flyway迁移脚本(更新的社区版版本8.x)失败,错误:验证失败:迁移验证失败“**错误。
- ingestionTime: 1665114622336
message: Flyway Community Edition 8.4.1 by Redgate
timestamp: 1665114621897
- ingestionTime: 1665114622336
message: 'Database: jdbc:postgresql://aws-rds-dev:5432/myapp (PostgreSQL 14.4)'
timestamp: 1665114621898
- ingestionTime: 1665114622336
message: 'ERROR: Validate failed: Migrations have failed validation'
timestamp: 1665114622186
- ingestionTime: 1665114622336
message: 'Detected applied migration not resolved locally: create trigger to update universal table. If you removed this migration intentionally, run repair to mark the migration as deleted.'
timestamp: 1665114622186
是否有文档说明如果升级postgresql数据库,如何迁移版本模式表项?
在这方面的任何帮助高度赞赏。
感谢您的评分
2条答案
按热度按时间jdgnovmf1#
这是Flyway V7中引入的更改的结果。在V7之前,丢失的可重复迁移被忽略,不会导致验证错误,而在V7之后,它们不再被忽略
要解决这个问题并保留以前的行为,您需要设置
ignoreMigrationPatterns="*:missing"
,这将防止missing migrations抛出验证错误。值得注意的是,默认情况下不会忽略丢失的迁移,因为不建议删除迁移,因为这会影响数据库的可重复性。如果您确实打算删除迁移,则运行
repair
将其在架构历史表中标记为deleted
将是首选选项dl5txlt92#
除了公认的答案(我想知道为什么官方文件没有解释这一点):我发现很难学习如何触发
repair
,所以我在Sping Boot 项目中使用以下方法创建了一个@Configuration
类:其余的flyway选项在我们的项目中通过application.yml文件进行配置。