sql >> Database teknologi >  >> RDS >> PostgreSQL

pgbouncer - lukker fordi:uren server på hver forbindelse

Ok, jeg tror jeg har fundet ud af det her. Problemet ligger i et langvarigt problem med Django og Psycopg2. Grundlæggende vil Psycopg2 automatisk udstede en BEGIN-erklæring til DB. Men hvis Django mener, at der ikke er sket nogen dataændring, udsteder den ikke en COMMIT ved afslutningen af ​​en transaktion.

Der er et par løsninger på dette problem, se på http://www. slideshare.net/OReillyOSCON/unbreaking-your-django-application for flere detaljer. Ideelt set deaktiverer du automatiske commits (ved at indstille autocommit =True i dine DB-indstillinger, akavet navnekonvention). Dette forhindrer transaktioner på skrivebeskyttede funktioner, men også på skrivefunktioner, så du skal manuelt indpakke disse funktioner i en @commit_on_success-dekorator.

Alternativt kan du blot tilføje django.middleware.transaction.TransactionMiddleware til dine Middleware-klasser. Dette vil omslutte hver anmodning i en transaktion. Dette betyder også unødigt at pakke skrivebeskyttede anmodninger ind i en transaktion, men det er en hurtig og beskidt løsning.




  1. Valg af lagermotor:Aria

  2. Sådan fungerer SQL Server SOUNDEX()-funktionen

  3. Tomme mellemrum i kolonnenavne med MySQL

  4. Oracle JDBC:underløb i dobbelt