从没有角色和/或权限的.sql转储文件恢复postgres架构?

时间:2017-04-26 23:55:18

标签: database postgresql vagrant psql

尝试从另一台服务器上创建的.sql转储文件恢复postgres数据库架构时收到以下错误:

REVOKE psql:backup.sql:158885:错误:角色“server_name”不存在

转储文件是使用pg_dump -U username "server_name" -n schema_name > schema_name.sql

创建的

如何创建没有角色和/或权限的转储文件?

1 个答案:

答案 0 :(得分:2)

通过添加选项(--no-owner -
"不输出命令来设置对象的所有权以匹配原始数据库。默认情况下,pg_restore发出ALTER OWNER或SET SESSION AUTHORIZATION语句以设置创建的模式元素的所有权。除非与超级用户(或拥有脚本中所有对象的同一用户)建立与数据库的初始连接,否则这些语句将失败。使用-O,任何用户名都可以用于初始连接,并且该用户将拥有所有创建的对象。"

--no-acl
" 防止恢复访问权限(授予/撤销命令)。"

pg_dump --no-owner --no-acl -U username "server_name" -n schema > schema.sql

https://www.postgresql.org/docs/9.2/static/app-pgrestore.html