在我的应用程序中,Liquibase使用一个特殊的用户liquibase
来连接到数据库并应用所有变更集。结果,所有创建的表,序列,函数等都有用户liquibase
作为所有者。 liquibase
用户是角色db_ddl_admin
的成员,我希望这个角色成为所有已创建对象的所有者。我可以通过在每个更改集的开头添加语句SET ROLE TO db_ddl_admin
来实现此目的,但是我不喜欢这种方法。有没有在Liquibase中设置这种设置的集中方式?
答案 0 :(得分:2)
Liquibase对所有变更集使用单个连接。因此,在changeLog的开头运行一次SET ROLE
语句就足够了:
<databaseChangeLog ...>
<changeSet runAlways="true" author="setup" id="init-role" dbms="postgresql">
<sql>SET ROLE TO db_ddl_admin</sql>
</changeSet>
... your changeSets go here ...
</databaseChangeLog>