迁移版本

问题描述:

如果我想安排我的迁移在多个目录中(假设我使用的是SQL迁移,和“SQL”目录下,我有一个“主”目录,然后一个“特殊”的目录) 。迁移版本

所以在SQL /主我“V1.1__some_change”等

然后我希望把其他迁移下的SQL /奇特。但是所有目录中的迁移版本号必须是不同的,例如,我不能将“V1.1__some_other_change”放在sql/special中,因为这会导致冲突。

但它不是那么容易管理在许多不同的目录中的线性版本号。有没有解决这个问题的好方法?

希望这个问题是清楚的。

那么这一切都取决于为什么特别是“特殊”以及它是如何与“主”

如果他们有相同的生命周期你可以使用不同的编号方案(在特殊的主体,发行点整数)或跟踪在共享资源分配的迁移人数(白板,wiki页面,...)以便知道下一个可用的是哪一个。

如果他们有单独的生命周期,您可以分别跟踪它们的Flyway实例(每个实例都有不同的flyway.table)。

+0

谢谢。他们有相同的生命周期。使用“主要”和“特殊”实际上是一个不好的例子。你对点特别发布的想法可能会奏效,但是所有的目录都具有相同的“重要性”。他们只是为了组织的目的而划分主题。现在我决定只使用完整的日期/时间戳作为版本号,这样它们或多或少地保证是唯一的,并且还可以在所有目录中维护迁移顺序。 – user2009267

今天我面对怎样的一个相同的问题。我更新了Flyway 1.7到2.0.3的最新版本。 我注意到迁移不再像1.7版本中那样工作了。

我们使用基本文件夹的不同子文件夹(db.migrations),以保持不同的数据库方案,其中有独立的生命周期自己schema_version表迁移:

src->main->resources->db.migrations 
->business_partitions 
    -> V1_1__BUSINESS_PARTITION_INDEXES.sql 
    -> V1__BUSINESS_PARTITIOS.sql 
->tech 
    -> V1_1__TECH_CERTIFICATES_AND_DECRYPTORS_TABLES.sql 
    -> V1__TECH.sql 
    -> V2__JMS.sql 
->view 
    -> V1__PARTITION11_DB_CREATION_SCRIPT_VIEWS.sql 

当我们执行我们的分贝今天在Java中使用以下行进行迁移:

Flyway flyway = new Flyway(); 
flyway.setDataSource(dataSource); 
flyway.setLocations("db.migrations.business_partitions"); 
flyway.migrate(); 

没有迁移完成。

我潜一点在飞路源代码和发现的问题是,位置是在mergeLocations滤出()的类CompositeMigrationResolver方法。

在那里,我的位置过滤掉,因为business_partitions是db.migrations的子文件夹,是对的BaseDir和BasePackage默认值。

我工作围绕通过设置的BaseDir和BasePackage明确:

flyway.setBaseDir("db.migrations.business_partitions"); 
flyway.setBasePackage("db.migrations.business_partitions"); 

,我读了这两种方法将在飞行用3被弃用,因此,也许这也将解决我们的问题。

+0

这些方法造成了很多麻烦,并且已经在SCM中消失了。这应该在2.1中再次按预期工作 –