sql >> データベース >  >> RDS >> PostgreSQL

このPostgreSQLトランザクションで警告が表示されるのはなぜですか:進行中のトランザクションはありません

    これは誤解のようです。私の大胆な強調を考えてみてください :

    警告は明らかに異なる同時トランザクションに属しています 、明示的なトランザクションを開始しませんでした。 commit 置き忘れあり 、自動コミットモードで動作しているため。

    ログを読み続けると、コミットのエントリがさらに下に表示される可能性があります:

    デバッグ

    それもrollbackも見つからない場合 入力もエラーも、コミットされていないゾンビトランザクションを残すアプリの問題をチェックします。これは悪いことです。

    システムビュー pg_stat_activity データベースに接続している間:

    SELECT *
    FROM   pg_stat_activity
    WHERE  datname = current_database()  -- only current database
    AND    pid <> pg_backend_pid()       -- except your current session
    AND    state LIKE 'idle%';
    

    stateidle 必ずしも疑わしいとは限りません。入力を待っているセッションだけです。
    しかし、idle in transaction およびidle in transaction (aborted)

    詳細については、こちらのマニュアル またはこれらの関連する回答:



    1. Oracleで休止状態:StringプロパティをCLOB列にマッピング

    2. 他のテーブルからテーブルの外部キーを設定する方法

    3. 従業員をマネージャーと一緒に取得する方法

    4. MySQLをJavaプログラムに接続する方法