2011-12-21 24 views
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"; 
     } 
} 

上記のコードの抜粋は、最初に、この生成された開閉接続:これは、ことを意味PostgreSQLのクエリキャッシュ - 予期せ

[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. 

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

が、第2の時間のためにこれをキャッシュされたクエリによっては問題が発生することがあります。私たちはquiresの順序を変えようとしましたが、それは助けになりませんでした。 SELECT 1+8のような単純なクエリは、キャッシュされていない可能性があります。

同様の問題は、psqlと他の言語ドライバ(PHPだけでなく)を使用してシミュレートできます。

PostgreSQL Query Cacheをインストールすると、すべてのトラブルが発生しました。

クエリキャッシュが何らかの形でこのように動作しないように設定する必要がありますか?

当社の設定ファイルはここにある: http://pastebin.com/g2dBjba0 - pcqd_hba.conf http://pastebin.com/X9Y3zrjx - pcqd.conf

+0

'PostgreSQL'または' Postgres'を省略しています。 "Postgre"はありません。 [詳細はこちら](http://wiki.postgresql.org/wiki/Postgres) –

+0

PDO pgsqlドライバを使ってみましたか? – Kenaniah

+0

私が言ったように、オリジナルのpsql(PostgreSQLのためのシェルツール)でも同じように動作します。私が使っているドライバーは問題ではありません。 –

答えて

0

チャンスはあなたがバックエンドでセグメンテーション違反を引き起こしているPostgreSQLのクエリキャッシュのバグを持っています。あなたの最善の解決策は、このアドオンをアンインストールすることです。

関連する問題