首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgis pg_stat_statements错误

Postgis pg_stat_statements错误
EN

Stack Overflow用户
提问于 2021-06-30 04:14:18
回答 2查看 235关注 0票数 0

我有一个Postgis数据库部署在Kubernetes集群上,使用this镜像:docker pull postgis/postgis:13-3.1

我试图解决这个错误:

代码语言:javascript
复制
2021-06-29 03:20:50.958 UTC [2852] ERROR:  relation "pg_stat_statements" does not exist at character 536
2021-06-29 03:20:50.958 UTC [2852] STATEMENT:  SELECT t2.rolname, t3.datname, queryid, calls, total_time / 1000 as total_time_seconds, min_time / 1000 as min_time_seconds, max_time / 1000 as max_time_seconds, mean_time / 1000 as mean_time_seconds, stddev_time / 1000 as stddev_time_seconds, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written, blk_read_time / 1000 as blk_read_time_seconds, blk_write_time / 1000 as blk_write_time_seconds FROM pg_stat_statements t1 JOIN pg_roles t2 ON (t1.userid=t2.oid) JOIN pg_database t3 ON (t1.dbid=t3.oid) WHERE t2.rolname != 'rdsadmin'

所以我在我所有的dbs中安装了缺少的扩展,如下所示:

代码语言:javascript
复制
psql -U $PG_USER \
  -d $DATABSE \
  -c "CREATE EXTENSION pg_stat_statements SCHEMA public"

psql -U $PG_USER \
  -d $DATABSE \
  -c "CREATE EXTENSION pg_stat_statements SCHEMA pg_catalog"

我现在得到了这个错误:

代码语言:javascript
复制
2021-06-29 20:04:46.870 UTC [331] ERROR:  column "total_time" does not exist at character 48
2021-06-29 20:04:46.870 UTC [331] STATEMENT:  SELECT t2.rolname, t3.datname, queryid, calls, total_time / 1000 as total_time_seconds, min_time / 1000 as min_time_seconds, max_time / 1000 as max_time_seconds, mean_time / 1000 as mean_time_seconds, stddev_time / 1000 as stddev_time_seconds, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written, blk_read_time / 1000 as blk_read_time_seconds, blk_write_time / 1000 as blk_write_time_seconds FROM pg_stat_statements t1 JOIN pg_roles t2 ON (t1.userid=t2.oid) JOIN pg_database t3 ON (t1.dbid=t3.oid) WHERE t2.rolname != 'rdsadmin'

我试着找出原因,但在任何地方都没有找到任何有用的东西。对如何解决这个问题有什么想法吗?

Postgres版本:psql (PostgreSQL) 13.2 (Debian 13.2-1.pgdg100+1)

配置文件:

代码语言:javascript
复制
# ...
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 1000
pg_stat_statements.track = all
# ...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-30 16:41:03

在jjanes注释之后,我发现Prometheus节点导出器进行了一个不正确的查询(here),这是因为该列确实拼写错误。

更改列名解决了此问题。

票数 2
EN

Stack Overflow用户

发布于 2021-06-30 05:46:47

该查询来自某个监控工具;据我所知,该工具与postgis无关。监控工具已经过时了,因为现在该列被称为"total_exec_time“。(在为计划时间和执行时间添加列时对其进行了重命名。)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68185097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档