2013-03-03 11 views
5

Rozwijając na mojego projektu Django Dostaję Databaseerror który mówi:Django - Jak uzyskać informacje o debugowaniu DatabaseError "bieżąca transakcja została przerwana" na stronie błędu Django?

obecna transakcja zostaje przerwana, polecenia ignorowane aż do końca bloku transakcji

wiem, że to się dzieje, ponieważ nie było zła transakcja PostgreSQL bez wycofywania, a błąd w tej złej transakcji można znaleźć w dzienniku błędów PostgreSQL. Myślę jednak, że byłoby to bardziej wygodne, gdyby błąd ten był wyświetlany na stronie błędu Django. Następnie możesz bezpośrednio zobaczyć, jaki jest problem.

Czy możliwe jest uzyskanie tych błędów PostgreSQL na stronie błędu Django? A jeśli tak, to w jaki sposób?

+1

Przeglądałeś pasek narzędzi debugowania django? - https://github.com/robhudson/django-debug-toolbar/commits/master/ –

+0

Czy wykonałeś jakieś badania? Próbowałeś czegoś? Czy sprawdziłeś dokumentację Django? Pokaż swój wysiłek. –

+0

@ BelowtheRadar Tak. Czy wiesz, że to pytanie ma około rok i już zostało udzielone? – rednaw

Odpowiedz

2

Jeśli chcesz przejść do drobiazgowych szczegółów wyjątku, możesz napisać niestandardowy middleware class, aby zawinąć przetwarzanie widoku i przechwycić nieobsługiwany kod django.db.DatabaseError i sprawdzić wyjątek w sesji debugowania z poziomu serwera rozwoju. konsola:

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 

wyjątki te są łagodne i zwykle pojawiają się, gdy przepływ żądanie-odpowiedź nitki za przedwcześnie kończy się dość często w trakcie rozwoju, jeśli klient przerywa połączenie przed zastosowaniem może powrócić odpowiedź, mimo, że nie może być wszystko tego.

Powiązane problemy