我有一个 postgres 数据库,其中已经定义了用户和角色。该数据库中有多个模式,它们都通过不同的项目/flyway 脚本进行控制。我正在努力将 Flyway 集成添加到一个新项目中,我们将在其中使用嵌入式 Postgres 实例进行测试。
由于此实例上不存在这些用户/角色,因此需要在迁移脚本中创建它们。但是,由于这些用户/角色已存在于我的操作数据库中,因此当他们尝试创建角色时迁移将失败。
我已经考虑为此编写一个函数,但是该函数必须包含在任何使用嵌入式 Postgres 的项目中,并且必须跨多个代码库进行维护。这看起来非常马虎。谁能为我推荐一种使用 Flyway 处理这些 DCL 操作的方法,该方法将与嵌入式方法以及我的操作数据库一起使用?
最佳答案
在之前的项目中,我们为此方法使用了一组附加的 Flyway 迁移脚本。我们将这些脚本添加到测试环境类路径中。 在添加回调和可重复迁移功能之前,我们将其用于 Flyway 版本。
为您的测试环境添加回调配置,并在迁移之前或之后添加您的用户和角色。
第三种解决方案为您的用户和角色设置使用可重复的迁移脚本,请参阅 https://flywaydb.org/documentation/migration/repeatable 。在生产和测试中使用此脚本。但在这种情况下,你的 sql 必须正确且可重复,否则你将破坏你的生产环境。
关于java - 如何处理Flyway迁移脚本中的DCL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41509729/