【发布时间】:2020-02-05 22:31:28
【问题描述】:
问题:我们有 2 个迁移文件,它们使用 postgres DB 中的函数创建了表。这些表是在一年前创建的,之后我们进行了许多新的迁移。 根据我们的新标准,我们禁止表名中的单词。
示例:我们不允许将转发表命名为“_audit”。创建的表名为“abc_audit”和“def_audit”。
禁止“_audit”嵌入在创建表的最新函数中。我们不能只更改表名,因为 docker 会启动整个新数据库并运行所有迁移文件,并且只考虑阻止“_audit”表名的最新函数 并且原始迁移失败。
我们如何解决这个问题?我们不想重新设置基线并丢失历史记录。
【问题讨论】:
-
让我看看我是否正确理解了您的问题。当您运行 Flyway Migrate 时,脚本将像这样运行: 1:创建具有 '__audit' 约定的表的迁移。 2:具有检查命名功能的版本化迁移。 3:失败。
-
否,V1 已创建表 ddl 并为其授予角色,并且授予角色通过此脚本中调用的函数运行。我们更改了底层函数,因此对于 docker,它运行 V1 脚本但调用了最新版本的函数,这导致了失败。
标签: migration flyway postgres-9.6