ようやくプロジェクトを本番レベルにリリースしたところ、開発段階では対処する必要のなかった問題が突然発生しました。
ユーザーが何らかのアクションを投稿すると、次のエラーが発生することがあります。
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
本当にイライラするのは、プロジェクトがローカル環境では正常に動作し、さらに一致するクエリ オブジェクトがデータベース内に存在することです。
現在、データベースが他のユーザーに予約されているときにユーザーがデータベースにアクセスしているのではないかと疑っていますが、私の主張を証明する方法も解決策もありません。
これまでにこのような問題に遭遇した人はいますか? この問題を解決する方法について何かアドバイスはありますか?
ご協力をよろしくお願いいたします。
編集: 受信したサーバー エラー メールから取得した同じ情報を使用して、データベースを手動でクエリしました。問題なくエントリにヒットできました。さらに、ユーザーが実行したのとまったく同じ動作では、ほとんどの場合は問題が起こらないようですが、一部のケース (まだ不明) では問題が発生するようです。結論として、データベースにエントリが見つからないという問題ではないことは間違いありません。
ベストアンサー1
このような主キーを持つコメント レコードがない場合は、次のコードを使用する必要があります。
try:
comment = Comment.objects.get(pk=comment_id)
except Comment.DoesNotExist:
comment = None