在 Postgres 数据库中创建对象时的 Liquibase 默认角色

Liquibase default role when creating objects in Postgres database

在我的应用程序中,Liquibase 使用特殊用户 liquibase 来连接到数据库并应用所有更改集。因此,所有创建的表、序列、函数等都有用户 liquibase 作为所有者。 liquibase 用户是角色 db_ddl_admin 的成员,我希望这个角色成为所有已创建对象的所有者。我可以通过在每个更改集的开头添加语句 SET ROLE TO db_ddl_admin 来实现这一点,但我不喜欢这种方法。在 Liquibase 中是否有集中设置此类设置的方法?

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>