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

时间:2012-12-14 12:30:13

标签: flyway

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

在您的情况下,您必须通过检查表并使用flyway.initialVersion = 1或flyway.initialVersion = 2调用init并随后调用migrate来手动重新包装Flyway并重新创建。