【发布时间】:2017-05-21 10:53:46
【问题描述】:
我有一个已定义用户和角色的 postgres 数据库。该数据库中有多个模式,它们都通过不同的项目/flyway 脚本进行控制。我正在努力将 Flyway 集成添加到一个新项目中,我们将在其中使用嵌入式 Postgres 实例进行测试。
由于此实例上不存在这些用户/角色,因此需要在迁移脚本中创建它们。但是,由于这些用户/角色已经存在于我的操作数据库中,因此当他们尝试创建角色时迁移将失败。
我已经考虑为此编写一个函数,但是该函数必须包含在任何使用嵌入式 Postgres 的项目中,并且必须跨多个代码库进行维护。这似乎很草率。谁能为我推荐一种使用 Flyway 处理这些 DCL 操作的方法,该方法可以与嵌入式方法以及我的操作数据库一起使用?
【问题讨论】:
-
Flyway 不像 Liquibase 那样提供一些先决条件吗? (只有在前提条件为真时才会执行迁移)或者如果行已经存在,您可以使用 Postgres 的
insert ... on conflict do nothing语法使语句不会失败 -
我没有从粗略的谷歌搜索中看到任何内容,或者在 Flyway 的文档中没有看到任何明显的内容。这似乎是一个非常重要的功能。
标签: java postgresql flyway embedded-database