pythonでpsycopg2パッケージを使用する2.7タイトルのエラーが引き続き発生する:psycopg2.DatabaseError:SSL SYSCALLエラー:EOFが検出されました
PgroutingクエリにWHERE column LIKE ''%X%''
句を追加した場合にのみ発生します。例:
SELECT id1 as node, cost FROM PGR_Driving_Distance(
'SELECT id, source, target, cost
FROM Edge_table
WHERE cost IS NOT NULL and column LIKE ''%x%'' ',
1, 10, false, false)
インターネット上のスレッドは、直感的にSSLの問題であることを示唆していますが、パターンマッチングの側面をコメント化するたびに、クエリとデータベースへの接続は正常に機能します。
これは、Xubuntu 13.10を実行しているローカルデータベース上にあります。
詳細な調査の後:不正なクエリであり、このパターンを持つリンクではないため、pgrouting拡張機能がデータベースをクラッシュさせることが原因のようです。
すぐに回答を投稿します...
Digital OceanインスタンスでDropletで遅いクエリを実行すると、この問題に遭遇しました。他のすべてのSQLは正常に動作し、ラップトップで動作しました。 1 GB RAM 512 MBではなくインスタンスにスケールアップした後は正常に動作するため、プロセスでメモリが不足している場合にこのエラーが発生する可能性があります。
この問題は、いくつかの不正なクエリが実行されていて、テーブルが無期限にロックされたときに発生しました。以下を実行することでクエリを見ることができました:
SELECT * from STV_RECENTS where status='Running' order by starttime desc;
次に、それらを殺します:
SELECT pg_terminate_backend(<pid>);
%
as %%
なぜなら%
はプレースホルダーマーカーです。 http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries
@ FoxMulder900がしたことと非常によく似た答えですが、彼の最初の選択が機能しなかった点が異なります。ただし、これは機能します。
_WITH long_running AS (
SELECT pid, now() - pg_stat_activity.query_start AS duration, query, state
FROM pg_stat_activity
WHERE (now() - pg_stat_activity.query_start) > interval '1 minutes'
and state = 'active'
)
SELECT * from long_running;
_
_long_running
_からプロセスを強制終了する場合は、最後の行をコメントアウトしてSELECT pg_cancel_backend(long_running.pid) from long_running ;
を挿入するだけです
300万行のテーブルで大きなUPDATEステートメントを実行すると、このエラーが発生しました。私の場合、ディスクがいっぱいでした。スペースを追加したら、UPDATEは正常に機能しました。
私の場合、それはOOMキラーでした(クエリが重すぎます)
Dmesgを確認します。
dmesg | grep -A2 Kill
私の場合:
Out of memory: Kill process 28715 (postgres) score 150 or sacrifice child