在Postgres的升级版本中,早期版本的迁移不再是有效的SQL

问题描述

在测试对Postgres数据库升级时,我们发现最旧版本的迁移文件之一不再是有效的sql。对于生产数据库来说,这不是一个问题,生产数据库(当然)已经在schema_history_table中进行了这些迁移,但是由于损坏的V文件,现在无法站立任何新的沙箱。

将旧的V文件带入现代世界而又不永远孤立我们的生产数据库的最佳方法是什么?

解决方法

我能想到的是几种可能的选择。

  1. 配置postgres以启用以前的版本兼容性。我不是专家,但是我认为有some options here
  2. 只需修改历史迁移脚本即可使其现在可以与新版本一起使用。这将意味着您不能再忍受旧版本,但这对您来说重要吗?我认为您需要在执行此操作后进行飞行修复,因为Flyway会检测到文件已被篡改。
  3. 创建一组并行的脚本,每个版本一个,将它们放在不同的文件夹中。然后使用flyway.locations选项根据目标版本指定不同的文件夹。