2
<?php
$c = pg_connect( $connectionString, PGSQL_CONNECT_FORCE_NEW );

$queries = array (
        "SELECT COUNT(*) AS data FROM articles",
        "SELECT * FROM posts WHERE visible = TRUE",
        "SELECT * FROM countries WHERE visible = FALSE",
        "SELECT * FROM types WHERE visible = TRUE"
);

foreach ( $queries as $query ) {
        $res = @pg_query( $c, $query );
        if ( empty( $res ) ) {
                echo "[ERR] " . pg_last_error( $c ) . "\n";
        } else {
                echo "[OK]\n";
        }
}

上面的代码片段第一次生成:

[OK]
[OK]
[OK]
[OK]

但这是第二次:

[OK]
[OK]
[ERR] server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
[ERR] server closed the connection unexpectedly
    This probably means the server terminated abnormally
        before or while processing the request.

这意味着某些缓存查询会导致问题。我们试图改变查询的顺序,但没有帮助。只有简单的查询,比如SELECT 1+8可能没有缓存的,总是运行良好。

可以使用 psql 和可能的任何其他语言驱动程序(不仅是 PHP)模拟类似的问题。

当我们安装PostgreSQL 查询缓存时,所有的问题都出现了。

是否应该以某种方式配置查询缓存而不是这种方式?

我们的配置文件在这里: http ://pastebin.com/g2dBjba0 – pcqd_hba.conf http://pastebin.com/X9Y3zrjx – pcqd.conf

4

1 回答 1

0

您可能在 PostgreSQL 查询缓存中有一个错误,导致后端出现段错误。您最好的解决方案是卸载此加载项。

于 2013-03-24T09:38:55.480 回答