Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql pg_stat_语句已启用,但该表不存在_Postgresql_Psql_Pg Stat Statements - Fatal编程技术网

Postgresql pg_stat_语句已启用,但该表不存在

Postgresql pg_stat_语句已启用,但该表不存在,postgresql,psql,pg-stat-statements,Postgresql,Psql,Pg Stat Statements,我已经启动并运行了postgresql-9.4,最近在官方的帮助下启用了pg_stat_语句模块 但我在使用时遇到以下错误: postgres=# SELECT * FROM pg_stat_statements; ERROR: relation "pg_stat_statements" does not exist LINE 1: SELECT * FROM pg_stat_statements; postgres=# SELECT pg_stat_statements_reset();

我已经启动并运行了postgresql-9.4,最近在官方的帮助下启用了pg_stat_语句模块

但我在使用时遇到以下错误:

postgres=# SELECT * FROM pg_stat_statements;
ERROR:  relation "pg_stat_statements" does not exist
LINE 1: SELECT * FROM pg_stat_statements;


postgres=# SELECT pg_stat_statements_reset();
ERROR:  function pg_stat_statements_reset() does not exist
LINE 1: SELECT pg_stat_statements_reset();
我与postgres用户一起登录到psql。 我还检查了可用的扩展列表:

postgres=# SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements'
;
        name        | default_version | installed_version |                          comment                          
--------------------+-----------------+-------------------+-----------------------------------------------------------
 pg_stat_statements | 1.2             |                   | track execution statistics of all SQL statements executed
(1 row)
以下是扩展版本查询的结果:

postgres=# SELECT * FROM pg_available_extension_versions WHERE name = 'pg_stat_statements';
        name        | version | installed | superuser | relocatable | schema | requires |                          comment                          
--------------------+---------+-----------+-----------+-------------+--------+----------+-----------------------------------------------------------
 pg_stat_statements | 1.2     | f         | t         | t           |        |          | track execution statistics of all SQL statements executed
(1 row)

任何帮助都将不胜感激。

未安装扩展:

SELECT * 
FROM pg_available_extensions 
WHERE 
    name = 'pg_stat_statements' and 
    installed_version is not null;
如果表为空,请创建扩展名:

CREATE EXTENSION pg_stat_statements;

我第一次使用liquibase部署环境时遇到了同样的问题。 我知道我的回答可能与你的问题无关,但这是第一个谷歌搜索结果,所以我认为像我这样的其他人可以带着我同样的问题来到这里

这些是PosGreSQL元数据表,在生成第一个xml文件时由liquibase检索

在我的例子中,它只是无用的自动生成代码,所以我通过删除以下行来解决它:

 <changeSet author="martinlarizzate (generated)" id="1588181532394-7">
        <createView fullDefinition="false" viewName="pg_stat_statements"> SELECT pg_stat_statements.userid,
    pg_stat_statements.dbid,
    pg_stat_statements.queryid,
    pg_stat_statements.query,
    pg_stat_statements.calls,
    pg_stat_statements.total_time,
    pg_stat_statements.min_time,
    pg_stat_statements.max_time,
    pg_stat_statements.mean_time,
    pg_stat_statements.stddev_time,
    pg_stat_statements.rows,
    pg_stat_statements.shared_blks_hit,
    pg_stat_statements.shared_blks_read,
    pg_stat_statements.shared_blks_dirtied,
    pg_stat_statements.shared_blks_written,
    pg_stat_statements.local_blks_hit,
    pg_stat_statements.local_blks_read,
    pg_stat_statements.local_blks_dirtied,
    pg_stat_statements.local_blks_written,
    pg_stat_statements.temp_blks_read,
    pg_stat_statements.temp_blks_written,
    pg_stat_statements.blk_read_time,
    pg_stat_statements.blk_write_time
   FROM pg_stat_statements(true) pg_stat_statements(userid, dbid, queryid, query, calls, total_time, min_time, max_time, mean_time, stddev_time, 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, blk_write_time);</createView>
    </changeSet>

可能您正在使用的Posgres用户不允许访问扩展。要使用pg_stat_statements_reset,如果我没弄错的话,你需要成为超级用户。谢谢你的评论,伙计,但我已经检查过了,postgres是超级用户:postgres=show是超级用户;是超级用户--------在第1行,嗯..但是我已经将这些行添加到postgresql.conf并重新启动了服务器。shared_preload_libraries='pg_stat_statements'更改需要重新启动pg_stat_statements.max=1000 pg_stat_statements.track=我还应该做些什么吗?您应该运行创建扩展pg_stat_statements;谢谢糟糕的是,我以为它会在添加到postgresql.conf.Strange之后自动创建。createextension表示它已经安装,但列表中并没有这样的表。还可以做什么?回答我自己的问题,它在加载后开始跟踪所有数据库的统计数据。为了能够访问它,您必须在任何数据库中创建扩展。但只有超级用户才能做到这一点,它允许访问所有数据库的统计数据。