TimescaleDB执行SQL报错percentile_agg函数不存在问题求助
报错原因
percentile_agg是TimescaleDB Toolkit扩展提供的专用统计函数,不属于PostgreSQL或TimescaleDB核心功能,找不到函数的问题按以下步骤解决:
解决步骤
- 第一步:检查并开启当前数据库的Toolkit扩展,执行SQL:
CREATE EXTENSION IF NOT EXISTS timescaledb_toolkit;
如果执行该命令报错,说明你的数据库实例未安装TimescaleDB Toolkit组件,先完成组件安装后再执行开启操作。
- 第二步:适配参数类型,你当前
yards字段为double precision类型,低版本Toolkit不支持该类型直接作为入参,可显式转换字段类型,将原SQL中对应行修改为:
SELECT player_id, displayname, mean(percentile_agg(yards::numeric)) as yards
- 第三步:如果开启扩展后仍报错,可显式指定函数所属schema调用,规避schema搜索路径异常问题:
SELECT player_id, displayname, mean(timescaledb_toolkit.percentile_agg(yards)) as yards
如果之前操作正常突然出现该问题,优先排查是否切换了操作的数据库、会话schema搜索路径被修改、或者扩展被误删除,上述三种方案可覆盖90%以上的同类报错场景。
内容的提问来源于stack exchange,提问作者hg628193hg
相关产品推荐
相关产品推荐

