一、错误信息

执行 pg_dump 命令备份,提示 cache lookup failed for type… 错误。

 二、错误分析

根据上面日志中的提示信息,可以确定 222222 这个 ID 号,在 pg_type 表中无法查找到。

分析 pg_proc 表结构。查看 pg_proc 表中对 pg_type.oid 引用的相关字段。

查询到 prorettype 字段中使用到了 222222 这个 ID。

三、解决方案

将 pg_proc 表的 proname 字段也输出,确认函数名称。

根据 getuserpermissionsbyentityid 函数名称,在数据库中查找到该函数。

查看到该函数的返回类型为 permissions_view。

在 pg_type 表中查询类型名称为 permissions_view 的类型是否存在。

查询到 permissions_view 类型的 oid 号为 236728。(如果未查询到需要先手动 insert 这条数据,再查询出 oid)。

修改 pg_proc 表中 prorettype 字段的引用 ID 为 236728。

 四、再次进行备份成功。