如何从 pg_dumpall 备份恢复所有内容(包括“postgres”角色)

Mik*_*nen 7 postgresql backup restore errors

我有一个 postgres 9.1 服务器正在运行,我用

pg_dumpall -c -f /nfs/backup/fulldump.sql
Run Code Online (Sandbox Code Playgroud)

我正在测试将备份恢复到另一台服务器

psql -f /nfs/backup/fulldump.sql
Run Code Online (Sandbox Code Playgroud)

以用户身份运行时postgres出现两个错误

psql:/nfs/backup/fulldump.sql:27: ERROR:  current user cannot be dropped
psql:/nfs/backup/fulldump.sql:36: ERROR:  role "postgres" already exists
Run Code Online (Sandbox Code Playgroud)

我知道这些是由命令引起的

DROP ROLE postgres;
CREATE ROLE postgres;
Run Code Online (Sandbox Code Playgroud)

在备份转储中。

是否有可能以某种方式恢复转储pg_dumpall -c而不会出现任何错误?

111*_*181 8

我最终使用 grep 来完成此操作:

egrep -v '^(CREATE|DROP) ROLE postgres;' dump.sql \
| psql -X -v ON_ERROR_STOP=1 -1 ...
Run Code Online (Sandbox Code Playgroud)

  • 我不敢相信这仍然是一个问题。谢谢你的 grep。 (3认同)