这是在9.3上,但我可以记住从7.x开始发生的类似事情。所以我创建数据库并将plpgsql扩展安装到其中。稍后,我创建一个pg_dump,然后将其恢复到数据库之前,请确保它也具有plpgsql扩展名。然后在还原时会发生这种情况:
pg_restore: creating EXTENSION plpgsql
pg_restore: creating COMMENT EXTENSION plpgsql
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2053; 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';
我正在创建一堆脚本,而pg_restore返回0对我来说非常重要,因此我可以忽略此事实并没有任何好处。让我感到困惑的是,我需要以postgres主用户身份创建扩展名的IIRC,所以我不知道为什么所有这些EXTENSION内容最终都会在我的转储中出现。毕竟,我不是该语言/扩展名的所有者吗?
无论如何,如果有任何建议可以解决这个问题,我将不胜感激。请注意,我知道-l / -L开关的工作方式。但是,这似乎花费了太多精力来纠正一个简单的扩展注释。