You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pg_restore执行SQL脚本时遭遇'query'列引用歧义错误

错误原因

你遇到的ERROR: column reference "query" is ambiguous错误,根源在于创建视图的SQL中,FROM子句里多余地为函数结果集指定了与原表列名完全一致的列列表。

当你调用返回SETOF pg_stat_activity类型的函数时,函数已经明确返回了与系统表pg_stat_activity结构完全一致的结果集,不需要额外指定列列表。而你在FROM schemaone.get_pg_stat_activity() get_pg_stat_activity(...)中添加的列列表,相当于给结果集的列重新赋予了和原列名完全相同的别名,这导致PostgreSQL解析器在解析get_pg_stat_activity.query时,无法区分是引用函数返回的原始列,还是你显式定义的别名列(尽管两者名称一致),从而触发歧义错误。

解决方法

直接移除FROM子句中函数别名后的列列表即可,修改后的创建视图SQL如下:

CREATE VIEW schematwo.pg_stat_activity AS
SELECT 
    get_pg_stat_activity.datid,
    get_pg_stat_activity.datname,
    get_pg_stat_activity.pid,
    get_pg_stat_activity.usesysid,
    get_pg_stat_activity.usename,
    get_pg_stat_activity.application_name,
    get_pg_stat_activity.client_addr,
    get_pg_stat_activity.client_hostname,
    get_pg_stat_activity.client_port,
    get_pg_stat_activity.backend_start,
    get_pg_stat_activity.xact_start,
    get_pg_stat_activity.query_start,
    get_pg_stat_activity.state_change,
    get_pg_stat_activity.wait_event_type,
    get_pg_stat_activity.wait_event,
    get_pg_stat_activity.state,
    get_pg_stat_activity.backend_xid,
    get_pg_stat_activity.backend_xmin,
    get_pg_stat_activity.query,
    get_pg_stat_activity.backend_type
FROM schemaone.get_pg_stat_activity() get_pg_stat_activity;

额外说明

  • 你的函数定义本身没有问题,SECURITY DEFINER的设置可以让普通用户通过该函数访问pg_catalog.pg_stat_activity(通常只有超级用户能直接访问)。
  • 移除多余的列列表后,函数返回的结果集列名与系统表完全一致,视图的SELECT子句可以正常解析每个列,不会再出现歧义。

内容的提问来源于stack exchange,提问作者Vaibhave S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:34:51