PostgreSQL 在pg_restore上pg_upgrade错误。 "role '29648' does not exist"



当使用pg_upgrade将PostgreSQL从11升级到13时,在步骤"恢复新集群中的数据库模式"中收到以下错误:

pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 3801; 0 0 ACL FUNCTION "pg_stat_statements_reset"() postgres
pg_restore: error: could not execute query: ERROR:  role "29648" does not exist

我可以看到pg_restore已经成功恢复了其他数据库和所有自定义表和约束。

在网上搜索后,我可以看到其他人建议使用pg_restore选项"-x,——no-privileges"但是,我没有看到将此应用于pg_upgrade命令的方法。

我尝试使用SELECT * FROM pg_roles;查找此角色,但无效,但我没有看到rolname或oid为"29648"的角色。

您设法破坏了您的数据库:有一个不存在的用户对函数pg_stat_statements_reset()的权限。你必须从你的良心或陈述历史中寻找原因。

这个问题的解决方案很简单,因为函数属于扩展:
DROP EXTENSION pg_stat_statements;
CREATE EXTENSION pg_stat_statements;

现在该函数将具有默认权限,并且升级应该没有问题。

相关内容

  • 没有找到相关文章

最新更新