我为工作中的应用程序创建了一个 flyway 项目。事实证明,在我准备好 flyway 设置以进行测试之前,其中一位开发人员已经在 TEST 上执行了一些 SQL 语句。
我的 sql 脚本有一些语句:
ALTER TABLE "TABLE1" MODIFY ("NAME" VARCHAR2(75 CHAR));
ALTER TABLE "TABLE2" DROP ("BOARD_ID");
ALTER TABLE "TABLE3" ADD CONSTRAINT "SYS_C0022270" CHECK ("ID" IS NOT NULL) ENABLE;
应该在语句 #2 中删除的列已经在我们的 TEST 实例上手动删除。它还没有被我们的 PROD 实例删除,我想通过迁移而不是手动来完成。
显然,如果不先在 TEST 上进行尝试,我就不会在 PROD 上运行迁移(比这三个查询要多得多)。
但是由于我遇到问题的迁移是第一个,因此无法继续。
有什么办法可以强制通过吗?我知道该列已被删除。我可以再次创建它,然后让迁移将其删除。但是我可能还有其他可能失败的查询(创建可能已经存在的种子数据等)。我不希望这会阻止我们的部署。
除了再次从 PROD 克隆我们的数据库并让开发团队在我准备一组新的迁移时停止他们的开发之外,还有什么想法吗?