2013-03-03 3 views
5

Bei der Entwicklung auf meinem Django-Projekt Ich erhalte eine Database, der sagt:Django - Wie man Debug-Informationen von DatabaseError "aktuelle Transaktion wird abgebrochen" in Django Fehlerseite?

aktuelle Transaktion wird bis zum Ende des Transaktionsblockes

Ich weiß, dass dies geschieht, weil es einen ignoriert Befehl abgebrochen wurde Eine fehlerhafte PostgreSQL-Transaktion ohne Rollback und der Fehler in dieser fehlerhaften Transaktion können im PostgreSQL-Fehlerprotokoll gefunden werden. Ich denke jedoch, es wäre viel praktischer, wenn dieser Fehler auf der Django-Fehlerseite angezeigt würde. Dann können Sie direkt sehen, was das Problem ist.

Also, ist es möglich, diese PostgreSQL-Fehler auf der Django-Fehlerseite zu bekommen? Und wenn ja, wie?

+1

Haben Sie sich die Django-Debug-Symbolleiste angesehen? - https://github.com/robhudson/django-debug-toolbar/commits/master/ –

+0

Hast du nachgeforscht? Hast du irgendwas versucht? Hast du die Django-Dokumentation gelesen? Zeigen Sie Ihre Anstrengung. –

+0

@BelowtheRadar Ja. Wussten Sie, dass diese Frage ungefähr ein Jahr alt ist und bereits beantwortet wurde? – rednaw

Antwort

2

Wenn Sie bis in die winzigsten Details der Ausnahme erhalten möchten, dann können Sie eine benutzerdefinierte schreiben middleware class Ansicht Verarbeitung wickeln und das nicht behandelte django.db.DatabaseError und überprüfen Sie die Ausnahme in einer Debug-Sitzung von Ihrem Entwicklungsservers fangen Konsole:

from django.db import DatabaseError 

class DatabaseErrorMiddleware(object): 
    def process_view(self, request, view, args, kwargs): 
     try: 
      view(request, *args, **kwargs) 
     except DatabaseError as err: 
      import pdb; pdb.set_trace() 
      # You can now fully inspect the `e` exception object and it's context 

Diese Ausnahmen sind gutartige und in der Regel auftreten, wenn eine Anfrage-Antwort-Thread vorzeitig beendet fließen, ziemlich oft während der Entwicklung, wenn Ihr Client die Verbindung vor der Anwendung abgebrochen könnte eine Antwort zurückgeben, auch wenn das nicht alles sein könnte davon.

Verwandte Themen