尝试从另一台服务器上创建的.sql转储文件恢复postgres数据库架构时收到以下错误:
的 REVOKE
psql:backup.sql:158885:错误:角色“server_name”不存在
转储文件是使用pg_dump -U username "server_name" -n schema_name > schema_name.sql
如何创建没有角色和/或权限的转储文件?
答案 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