PostgreSQL 在使用 pgadmin pg_restore 进行 pg_restore 时出错:[archiver (db)] 无法执行查询:错误:角色不存在

PostgreSQL 在使用 pgadmin pg_restore 进行 pg_restore 时出错:[archiver (db)] 无法执行查询:错误:角色不存在

我正在尝试使用 pgadmin 备份和恢复实用程序将 PostgreSQL 中的数据库从一个模式恢复到另一个模式。数据库 A 的备份成功,但当我尝试将其恢复到另一个数据库 BI 时出现以下错误:

样本:

pg_restore: creating TABLE "public.app_role"
pg_restore: [archiver (db)] Error from TOC entry 227; 1259 197811 TABLE app_role schedule
pg_restore: [archiver (db)] could not execute query: ERROR:  role "schedule" does not exist
    Command was: ALTER TABLE public.app_role OWNER TO schedule;

我尝试更改恢复选项,例如不保存所有者为是、权限为是等等,但仍然没有成功。

有人知道这个问题或者之前遇到过类似的问题吗?

答案1

您需要备份中引用的角色。要获取这些角色,请执行以下操作:

pg_dumpall --globals-only > globals.dump

然后您pg_restore -f globals.dump <database> 就可以恢复源数据库集群上的所有角色。

如果您因某种原因无法执行此操作,您还可以编辑备份文件以查找schedule目标系统上设置的另一个角色的引用

相关内容