W końcu wydałem swój projekt na poziom produkcyjny i nagle mam pewne problemy, z którymi nigdy nie miałem do czynienia w fazie rozwoju.
Kiedy użytkownicy publikują jakieś działania, czasami pojawia się następujący błąd.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 111, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "home/ubuntu/server/opineer/comments/views.py", line 103, in comment_expand
comment = Comment.objects.get(pk=comment_id)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py", line 131, in get
return self.get_query_set().get(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 366, in get
% self.model._meta.object_name)
DoesNotExist: Comment matching query does not exist
To, co mnie naprawdę frustruje, to fakt, że projekt działa dobrze w środowisku lokalnym, a ponadto pasujący obiekt zapytania ISTNIEJE w bazie danych.
Teraz podejrzewam, że użytkownik uzyskuje dostęp do bazy danych, gdy jest ona zarezerwowana dla innych użytkowników, ale nie ma możliwości udowodnienia mojego argumentu ani nie mam na to żadnego rozwiązania.
Czy ktoś miał wcześniej tego typu problem? Jakieś sugestie, jak rozwiązać ten problem?
Z góry dziękuję za pomoc.
EDYCJA: ręcznie przeszukałem bazę danych, korzystając z tych samych informacji, które otrzymałem w wiadomości e-mail o błędzie serwera. Udało mi się trafić na wpis bez problemu. Ponadto wydaje się, że dokładnie to samo zachowanie, które wykonał użytkownik, przez większość czasu nie powoduje żadnego problemu, ale raczej w niektórych (jeszcze nieznanych) przypadkach. Podsumowując, na pewno nie jest to problem z brakującym wpisem w bazie danych.
comment = Comment.objects.get(pk=comment_id)
sprawdź, czy identyfikator istnieje w bazie danych