2016-11-03 52 views
1

我目前的项目有一些Flyway迁移,用于将初始数据导入数据库。这些数据特别方便开发人员快速设置项目。生产数据通过一些批处理作业导入并具有较新的版本。Flyway:如何从迁移中删除大型迁移脚本

其中一些迁移非常大(〜20MB),因此每次应用程序启动时,Flyway都需要一些时间来计算迁移的校验和。这对于集成测试也是一个问题,因为这也需要更长的时间。

我认为这种方法是对Flyway的滥用,我认为迁移工具应该主要用于结构数据。

我想从我们的应用程序中删除这些文件,而是使用配置管理工具(例如Vagrant,Puppet,Chef)在开发人员环境中导入测试数据。但是,我不能只删除应用程序中的迁移文件,因为Flyway会抱怨迁移已记录在数据库中,但不存在于应用程序迁移中。

我的第一个想法是创建具有高优先级的版本号的新移民,将

  1. 删除测试数据
  2. 从schema_version表中删除迁移

,然后删除迁移脚本。然而,这不起作用,Flyway仍然抱怨删除的迁移脚本丢失。 是否有限制,您不能与迁移中的schema_version表进行交互?

我还有其他选择吗?如果可能,我想用Flyway做而不是手动做。

回答

1

Repair是你最好的选择。清空这些数据迁移并运行repair命令,根据空文件重新计算它们的校验和。