首页 > 解决方案 > 尝试使用 psql 在 Postgres 中获取函数的来源时,错误“列 p.proisagg 不存在”是什么意思?

问题描述

背景:在RDS上使用postgres 11,界面是Centos 7上的psql;目标是显示某些存储过程/函数的来源,以便我可以使用它们

问题描述:当我尝试\df+使用基于 [official docs here](https://www.postgresql.org/docs/current /app-psql.html],报错如下图:

psql=> \df+ schema_foo.proc_bar;
ERROR:  column p.proisagg does not exist
LINE 6:   WHEN p.proisagg THEN 'agg'

我不知道如何解释这一点;有问题的函数不包含错误中显示的逻辑片段,也不包含那里引用的列p.proisagg。我已经通过在 vim 中打开函数来验证这一点\ef

我的猜测基于几个不相关的 github 问题,这些问题提到了同样的错误,例如,它引用了 postgres 内部的一些模式代码。

总结:简而言之,我可以使用 来查看函数的来源\ef,所以从实际的角度来看,我的工作并没有受到影响,但是我想了解这个错误以及我遇到它的原因\df+

标签: sqlpostgresqlamazon-rdspsql

解决方案


我遇到了同样的问题并运行了这两个命令来修复它

sed -i "s/NOT pp.proisagg/pp.prokind='f'/g" /usr/share/phpPgAdmin/classes/database/Postgres.php
sed -i "s/NOT p.proisagg/p.prokind='f'/g" /usr/share/phpPgAdmin/classes/database/Postgres.php

推荐阅读