我正在将Postgres用于django项目,并且当前正在实现一个数据库备份/还原系统,该系统尽可能简单,当用户单击“备份”时执行pg_dump,然后在用户单击“还原备份”时执行pg_restore。
一切看起来不错,直到它实际上尝试执行pg_restore时才给出此错误:
pg_restore:[归档器(db)]来自TOC条目3206的错误;0 0 COMMENT EXTENSION plpgsql pg_restore:[存档(db)]无法执行查询:错误:必须是扩展plpgsql的所有者命令是:COMMENT ON EXTENSION plpgsql是'PL / pgSQL程序语言';
我研究了plpgsql是什么,我理解了这一点,对于错误,我尝试手动将“扩展所有者”设置为执行脚本并拥有数据库本身的用户,但并没有改变,这确实令人讨厌试图对所有事物设置注释的错误
这都是由pg_dump自动创建的,因此不能删除注释行,并且没有禁用注释的标志(我知道这些标志已经关闭),因此我对于解决该问题确实很执着。
\l
,那么在该数据库的“所有者”列中会看到什么?由于plpgsql是一种不受信任的语言,因此数据库所有者或数据库超级用户只能对其进行修改(并且我想这甚至适用于它的注释)。