我正在尝试使用 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
目标系统上设置的另一个角色的引用