我使用的Postgres的Django项目,我目前正在执行一个数据库备份的PostgreSQL 9.1 pg_restore的错误/恢复系统,当用户单击备份,然后pg_restore的,当他们键还原备份尽可能简单执行pg_dump的。关于PLPGSQL
一切似乎很好,很正常,直到它实际上是尝试执行此时它给这个错误的pg_restore的:
pg_restore: [archiver (db)] Error from TOC entry 3206; 0 0 COMMENT EXTENSION plpgsql pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
我看着就是PLPGSQL等我明白了,对于错误我尝试手动设置“扩展的所有者”给执行脚本的用户,并拥有数据库本身,但没有任何改变,它真的很烦人,因为它试图设置所有东西的评论错误
这是所有这些都是由pg_dump自动创建的,所以注释行不能被删除,并且没有标志来禁用注释(我知道),所以我真的坚持如何解决这个问题。
如果您连接使用PSQL和类型'\ l',你怎么看在该数据库中的“所有者”列?由于plpgsql是不可信的语言,它只能被数据库所有者或数据库超级用户修改(并且我猜这甚至适用于它的评论)。 – kgrittn 2012-04-16 09:22:16
我可以证实,所有者是数据库的是正确的,由pg_restor命令的-U选项(和pg_dump的太)指定的用户 – 2012-04-16 23:28:55
这不是那么简单,很遗憾匹配。我有pg_dump输出,希望能够使用这些语言创建语言和函数。如果我手动创建语言作为数据库超级用户,则由于权限错误而导致功能创建失败。如果我不这样做,程序语言安装由于许可错误而失败。在任何一种情况下,都会触发更多的依赖于现有功能的功能,因为这些功能不存在也无法创建。 – Quixadhal 2012-12-03 14:31:45