pg_dump:缺少 pg_catalog.pg_roles 关系

问题描述 投票:0回答:1

我在 postgres 服务器上创建了一个数据库

testDb1
。向该数据库添加一些数据后,我创建了该数据的转储并将其恢复到新的数据库
testDb2
。之后,数据被添加到第二个数据库一段时间。 现在,我想使用以下命令转储
testDb2
的数据:

pg_dump -U "postgres" --no-privileges -Fd -j 4 -f dump_20230102_db2 testDb2

但这给了我以下错误:

pg_dump: error: query failed: ERROR:  relation "pg_catalog.pg_roles" does not exist
LINE 1: ....tableoid, n.oid, n.nspname, (SELECT rolname FROM pg_catalog...
                                                             ^
pg_dump: error: query was: SELECT n.tableoid, n.oid, n.nspname, (SELECT rolname FROM pg_catalog.pg_roles WHERE oid = nspowner) AS rolname, (SELECT pg_catalog.array_agg(acl ORDER BY row_n) FROM (SELECT acl, row_n FROM pg_catalog.unnest(coalesce(n.nspacl,pg_catalog.acldefault('n',n.nspowner))) WITH ORDINALITY AS perm(acl,row_n) WHERE NOT EXISTS ( SELECT 1 FROM pg_catalog.unnest(coalesce(pip.initprivs,pg_catalog.acldefault('n',n.nspowner))) AS init(init_acl) WHERE acl = init_acl)) as foo) as nspacl, (SELECT pg_catalog.array_agg(acl ORDER BY row_n) FROM (SELECT acl, row_n FROM pg_catalog.unnest(coalesce(pip.initprivs,pg_catalog.acldefault('n',n.nspowner))) WITH ORDINALITY AS initp(acl,row_n) WHERE NOT EXISTS ( SELECT 1 FROM pg_catalog.unnest(coalesce(n.nspacl,pg_catalog.acldefault('n',n.nspowner))) AS permp(orig_acl) WHERE acl = orig_acl)) as foo) as rnspacl, NULL as initnspacl, NULL as initrnspacl FROM pg_namespace n LEFT JOIN pg_init_privs pip ON (n.oid = pip.objoid AND pip.classoid = 'pg_namespace'::regclass AND pip.objsubid = 0)

我检查了原始数据库

testDb1
,上面的查询生成了结果,但不是
testDb2

我还将

testDb2
的所有者更改为 postgres,但没有运气。

我可以做什么来恢复或生成 pg_catalog.pg_roles

testDb2

更新:

两个数据库都使用相同的版本 14.4

\d *pg_roles*
testDb2
的输出为:

testDb2-# \d *pg_roles*
Did not find any relation named "*pg_roles*".
postgresql pg-dump pg-restore
1个回答
0
投票

您应该恢复备份,因为根据我的问题的答案,您的数据库已损坏。

实际上,我在尝试显示

person

表的定义时遇到了同样的错误,如下所示,然后我问了
问题,然后重新安装PostgreSQL解决了我的情况下的错误:

postgres=# \d person ERROR: relation "pg_catalog.pg_roles" does not exist LINE 2: ...catalog.array_to_string(array(select rolname from pg_catalog...
    
© www.soinside.com 2019 - 2024. All rights reserved.