我们正在尝试从flyway 2.0.3迁移到4.0.3。这失败了,因为flyway尝试从schema_version表中删除主键,但它在2.0.3中没有。阅读以前关于飞路升级问题的帖子,似乎我们有两个选择。尝试以几个步骤迁移,首先迁移到2.3,(可以跳过升级到3?),然后再到4.0.3或手动更新schema_version表。出于各种原因,我们想做后者。
使用flyway的最佳方法是什么?我们的客户没有可用的数据库客户端工具,可以直接在数据库上执行SQL。有没有办法在升级到schema_version表之前执行sql脚本,例如
preFlywayUpgrade.sql
?我尝试了preRepair.sql,但只有在flyway成功更新了schema_version表后才会执行。
编辑:2016-08-18: 我最终从版本2.3.1,3.2和4.0.3下载了flyway src,将所需的sql语句从2.0.3迁移到4.0.3,并将生成的sql添加到flyway-core-4.0.3,替换现有的4.0.3迁移脚本。 我可以理解你不想永久保留旧的迁移代码,但是我使用过的项目保留了他们的数据库迁移脚本多年,有些客户不经常升级。鉴于flyway是一个用于从任何给定版本逐步升级的工具,如果它支持升级本身更舒适,那将是不错的。 (不要误解我的意思,我真的很感谢你所做的所有工作,我认为这是一个很棒的工具!) 一个想法可能是让flyway将自己的版本记录写入schema_version表。这样就可以更容易地识别需要对schema_version表本身进行哪些更改。
答案 0 :(得分:1)
答案 1 :(得分:0)
如果您希望Flyway为您完成工作,您必须遵循内置升级路径并迁移到最新版本的每个主要版本,然后再转到下一个版本。否则你就是自己。
或者您也可以删除schema_version
表并使用新版本的Flyway再次为数据库建立基线。