使用Flyway自动迁移不同模式版本的数据库



我认为文档(http://flywaydb.org/getstarted/existingDatabaseSetup.html)不够清楚,并且希望通过示例来说明描述。我有一个给你:

假设我们有两个不同版本的生产数据库(1和2),它们的模式版本是隐式的,但通过查询现有表来确定。那么我们将如何实现文档中描述的内容?

在我的示例中,这两个版本都附带了一个脚本:版本1:创建表A版本2:创建表B

我已经创建了与版本1和版本2的脚本匹配的java迁移文件,但由于缺少flyway元数据,我需要查询数据库是否运行了脚本,并在这种情况下跳过它们。问题是应用程序崩溃,因为Flyway尚未初始化。

我不想从命令行初始化Flyway,因为我希望它在部署时自动完成(嵌入模式下的Flyway)。据我所见,这只适用于空数据库。这个问题有简单的解决办法吗?

对于单个PROD数据库,您可以使用flyway.initOnMigrate

在您的情况下,您必须包装Flyway并手动重新创建它,方法是检查表,然后用Flyway.initialVersion=1或Flyway.iitialVersion=2调用init,然后调用migrate。

最新更新