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

pgbouncer-終了理由:すべての接続でサーバーがクリーンでない

    わかりました、私はこれを理解したと思います。問題は、DjangoとPsycopg2の長年の問題にあります。基本的に、Psycopg2は自動的にBEGINステートメントをDBに発行します。ただし、Djangoがデータ変更が発生していないと判断した場合、トランザクションの終了時にCOMMITを発行しません。

    この問題にはいくつかの解決策があります。 http://wwwをご覧ください。 slideshare.net/OReillyOSCON/unbreaking-your-django-application 詳細については。理想的には、自動コミットをオフにします(DB設定でautocommit =Trueを設定することにより、厄介な命名規則)。これにより、読み取り専用関数だけでなく書き込み関数でもトランザクションが防止されるため、これらの関数を@commit_on_successデコレータで手動でラップする必要があります。

    または、django.middleware.transaction.TransactionMiddlewareをミドルウェアクラスに追加するだけです。これにより、トランザクション内のすべてのリクエストがラップされます。これは、トランザクションで読み取り専用リクエストを不必要にラップすることも意味しますが、これは手っ取り早い解決策です。




    1. Postgresはネストされたトランザクションまたは自律的なトランザクションをサポートしていますか?

    2. jooq-postgresのUNIQUE制約の認識に問題があります

    3. 単語「配列」を返すPHPエコー

    4. VBSとレジストリを使用して、インストールされているバージョンと32ビットと64ビットのOracleドライバを判別する