【问题标题】:Unable to delete PostgreSQL role无法删除 PostgreSQL 角色
【发布时间】:2018-05-23 06:47:32
【问题描述】:

昨天我创建了一个用户来从 PostgreSQL 进行备份。我将 select 授予该用户,然后我注意到该名称写得不好。问题是我试图使用命令行删除用户,但由于我不久前的授权,得到的响应是:

ERROR:  role "dump_user" cannot be dropped because some objects depend on it

长话短说,我使用 pgadmin 删除了这个用户,现在我遇到了问题,因为当我想创建一个新表时,它告诉:

ERROR:  role 313898229 was concurrently dropped

我查了一下,313898229 是 pg_authid 表中这个 dump_user 的 oid,我试图创建一个新用户并分配这个 oid,但是 postgres 说我不能修改系统 id “oid”。

有没有办法永久删除这个用户?

【问题讨论】:

    标签: postgresql roles privileges


    【解决方案1】:

    如果你想要的只是a different name:

    ALTER ROLE dump_user RENAME TO better_name;
    

    现在为时已晚。在删除您应该运行的角色之前:

    REASSIGN OWNED BY pg_dump TO postgres; -- postgres being default superuser role
    

    在此处阅读详细信息:

    您的错误信息:

    错误:角色 313898229 被同时删除

    定义为in the source code here。看起来像是两个事务之间的竞争条件。但是你省略了相关细节。

    【讨论】:

      猜你喜欢
      • 2021-04-18
      • 1970-01-01
      • 2021-10-10
      • 2019-07-24
      • 2018-12-17
      • 1970-01-01
      • 2020-01-04
      • 1970-01-01
      • 2021-03-28
      相关资源
      最近更新 更多