2015-11-03 26 views
10

我们使用Flyway迁移数据库模式,并且我们已经有超过100个迁移脚本。任何方式来“压缩”飞行路线迁移?

一旦我们将多次迁移压缩为单个第一版迁移,在开发过程中就可以了,因为我们删除并重新创建了该模式。但在生产中这是行不通的,因为Flyway无法验证迁移。

我无法找到任何文件或最佳做法在这种情况下做什么。问题在于文件数量不断增加,我不希望每次都看到数千个迁移文件,基本上如果产品已经在最新版本中。我的意思是,版本号低于生产版本的迁移脚本与我们无关,如果我们能够将这些文件压缩到单个迁移中,那将是非常棒的。

我们正在使用MySQL。

我们该如何处理?

回答

10

难道重新基线会做什么?

我还是新来飞行,但这是我认为它会工作。请在接受我的要求之前先测试以下内容。

删除schema_version表。 删除您的迁移脚本。

运行迁飞基线 (此重新创建schema_version表,并增加了一个基线记录为第1版)

现在你是好去。请记住,由于您已经删除了所有迁移脚本,因此您将无法“迁移”到任何以前的版本,但这对您来说可能不是问题。

一步一步溶液:

  1. drop table schema_version;
  2. 导出的数据库结构经由MySQL工作台的脚本,例如。命名此脚本V1__Baseline.sql
  3. 删除所有迁移脚本,并添加V1__Baseline.sql到脚本文件夹,所以它是迁飞唯一可用的脚本
  4. 运行迁飞的“基线”命令
  5. 完成
+0

难道这不是意思是说,如果你是一个开发团队,那么所有其他开发人员也需要删除表schema_version? –

+0

是的。每个由该套Flyway迁移脚本“管理”的数据库都需要相同的处理。 –

+0

运行基线时,flyway会检查现有模式是否与新的V1__Baseline.sql模式匹配?如果我不想让flyway根据V1__Baseline.sql验证现有模式,我可以使用schema_version表中生成的校验和创建一行吗? – lloiacono