首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PostgreSQL 9.1关于PLPGSQL的pg_restore错误

PostgreSQL 9.1关于PLPGSQL的pg_restore错误
EN

Stack Overflow用户
提问于 2012-04-16 05:44:11
回答 6查看 56.9K关注 0票数 81

我正在为django项目使用Postgres,我目前正在实现一个数据库备份/还原系统,该系统在用户单击backup时执行pg_dump,然后单击restore执行pg_restore。

在它真正尝试执行pg_restore之前,一切看起来都很好,而此时它会出现以下错误:

pg_restore: pg_restore (db)错误来自TOC条目3206;0注释扩展plpgsql pg_restore: pg_restore (db)无法执行查询:错误:必须是扩展plpgsql命令的所有者是:对扩展plpgsql的注释是'PL/pgSQL过程语言‘;

我研究了plpgsql是什么等等,并且我理解这一点,关于错误,我尝试手动将“扩展所有者”设置为执行脚本并拥有数据库本身的用户,但这并没有改变什么,这一点都没有改变,因为它在尝试设置所有内容的注释时出错,这真的很烦人。

所有这些都是由pg_dump自动创建的,因此不能删除注释行,也没有禁用注释的标志(我已经知道了),所以我确实无法解决这个问题。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-08-02 11:00:00

pg_restore似乎试图恢复一些您不拥有的额外数据。尝试将-n public选项添加到pg_restore命令行。它只告诉pg_restore只还原公共模式的内容。您的命令行应该看起来像

代码语言:javascript
运行
复制
pg_restore -U username -c -n public -d database_name
票数 135
EN

Stack Overflow用户

发布于 2012-09-04 17:04:24

我在这个页面上找到了以下解决办法:

http://archives.postgresql.org/pgsql-general/2011-10/msg00826.php

这样做的想法是使用pg_restore -l列出归档的内容,grep删除用户没有恢复权限的扩展,并在还原时使用pg_restore -L使用这个省略列表。

例如:

代码语言:javascript
运行
复制
pg_restore -l ~/database.dump | grep -v "EXTENSION - plpgsql" > ~/restore_elements
pg_restore -L ~/restore_elements ~/database.dump
票数 18
EN

Stack Overflow用户

发布于 2019-10-17 12:00:00

如果您正在运行Postgres 11's (or higher) version of pg_dump,那么您可以利用新的--no-comments标志。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10169203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档