sql >> Database >  >> RDS >> PostgreSQL

pgbouncer - sluiten omdat:onreine server bij elke verbinding

Ok, ik denk dat ik dit doorheb. Het probleem ligt bij een al lang bestaand probleem met Django en Psycopg2. Kortom, Psycopg2 geeft automatisch een BEGIN-instructie af aan de DB. Als Django echter denkt dat er geen gegevenswijziging heeft plaatsgevonden, geeft het geen COMMIT af aan het einde van een transactie.

Er zijn een paar oplossingen voor dit probleem, kijk op http://www. slideshare.net/OReillyOSCON/unbreaking-your-django-application voor meer details. Idealiter zet je automatische commits uit (door autocommit =True in te stellen in je DB-instellingen, onhandige naamgevingsconventie). Dit voorkomt transacties op alleen-lezen-functies, maar ook op schrijffuncties, dus u moet die functies handmatig in een @commit_on_success-decorator verpakken.

U kunt ook de django.middleware.transaction.TransactionMiddleware toevoegen aan uw Middleware-klassen. Hiermee wordt elk verzoek in een transactie verpakt. Dit betekent ook dat er onnodig alleen-lezen verzoeken in een transactie worden verpakt, maar het is een snelle en vuile oplossing.




  1. Hoe kan ik een tabel in Oracle beschrijven zonder de opdracht DESCRIBE te gebruiken?

  2. Correcte manier om gegevens in SQL-database op te slaan wanneer kolommen onbekend zijn

  3. mysql join-queryvolgorde in twee kolommen

  4. JavaScript (Postgres DB) - Een voorbereide instructie gebruiken met een array als parameter in de WHERE IN ( )-clausule