PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

pgbouncer - ditutup karena:server tidak bersih di setiap koneksi

Oke, saya pikir saya sudah memikirkan ini. Masalahnya terletak pada masalah lama dengan Django dan Psycopg2. Pada dasarnya, Psycopg2 akan secara otomatis mengeluarkan pernyataan BEGIN ke DB. Namun, jika Django berpikir tidak ada modifikasi data yang terjadi, itu tidak akan mengeluarkan COMMIT di akhir transaksi.

Ada beberapa solusi untuk masalah ini, lihat http://www. slideshare.net/OReillyOSCON/unbreaking-your-django-application untuk lebih jelasnya. Idealnya Anda mematikan komit otomatis (dengan mengatur autocommit =True dalam pengaturan DB Anda, konvensi penamaan yang canggung). Ini mencegah transaksi pada fungsi hanya-baca, tetapi juga pada fungsi tulis sehingga Anda perlu membungkus fungsi tersebut secara manual dalam dekorator @commit_on_success.

Atau, tambahkan saja django.middleware.transaction.TransactionMiddleware ke kelas Middleware Anda. Ini akan membungkus setiap permintaan dalam suatu transaksi. Ini berarti juga tidak perlu membungkus permintaan hanya-baca dalam suatu transaksi, tetapi ini adalah solusi cepat dan kotor.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di PostgreSQL, bagaimana cara memasukkan data dengan perintah COPY?

  2. Python psycopg2 copy_from() untuk memuat data melempar kesalahan untuk nilai integer nol:DataError:sintaks input tidak valid untuk integer:

  3. Mengganti nama beberapa kolom di PostgreSQL

  4. Menggabungkan Gabungan kolom JSON(B) dalam kueri

  5. Tidak dapat memanggil sumber daya JNDI dalam file persistensi.xml