sql >> Databasteknik >  >> RDS >> PostgreSQL

pgbouncer - stängs eftersom:oren server på varje anslutning

Ok, jag tror jag har kommit på det här. Problemet ligger i ett långvarigt problem med Django och Psycopg2. I grund och botten kommer Psycopg2 automatiskt att utfärda en BEGIN-sats till DB. Men om Django tror att ingen dataändring har skett, kommer den inte att utfärda ett COMMIT i slutet av en transaktion.

Det finns några lösningar på detta problem, titta på http://www. slideshare.net/OReillyOSCON/unbreaking-your-django-application för mer detaljer. Helst stänger du av automatiska commits (genom att ställa in autocommit =True i dina DB-inställningar, besvärlig namnkonvention). Detta förhindrar transaktioner på skrivskyddade funktioner, men också på skrivfunktioner, så du måste manuellt slå in dessa funktioner i en @commit_on_success-dekorator.

Alternativt kan du bara lägga till django.middleware.transaction.TransactionMiddleware till dina Middleware-klasser. Detta kommer att avsluta varje begäran i en transaktion. Detta innebär också att man i onödan slår in skrivskyddade förfrågningar i en transaktion, men det är en snabb och smutsig lösning.




  1. Hur DEGREES() fungerar i MariaDB

  2. Hur man tar bort filer i SQL Server 2019

  3. Beräknar värde med hjälp av föregående värde på en rad i T-SQL

  4. Hur kan jag lägga till en kryssruta i en datatabell som ska användas för att radera den valda raden?