[解決済み] Django エラー - 一致するクエリが存在しません。
質問
プロジェクトをようやく本番稼動させたのですが、突然、開発段階では対処する必要のなかった問題が発生しました。
ユーザーが何らかのアクションを投稿すると、以下のようなエラーが発生することがあるのですが。
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
私が本当にイライラするのは、プロジェクトがローカル環境で正常に動作し、さらに、一致するクエリオブジェクトがデータベースに存在することです。
今、私は、他のユーザーが予約しているときに、そのユーザーがデータベースにアクセスしているのではないかと疑っているのですが、私の主張を証明する方法はありませんし、解決策も持っていません。
このような問題が発生したことがある方はいらっしゃいますか?この問題を解決する方法について、何か提案があれば教えてください。
よろしくお願いします。
EDIT: 受信したサーバーエラーのメールから取得した同じ情報を使って、手動でデータベースに照会してみました。問題なくエントリーをヒットさせることができました。さらに、ユーザーが行ったのと全く同じ動作でも、ほとんどの場合は問題が発生せず、むしろ一部の(まだ知られていない)ケースで問題が発生するようです。結論から言うと、間違いなくデータベースの欠落したエントリーの問題ではありません。
解決方法は?
エラーが発生した行はここです。
comment = Comment.objects.get(pk=comment_id)
存在しないコメントにアクセスしようとしています。
from django.shortcuts import get_object_or_404
comment = get_object_or_404(Comment, pk=comment_id)
サーバーでエラーが発生する代わりに、ユーザーは 404 を受け取ります。これは、ユーザーが存在しないリソースにアクセスしようとしたことを意味します。
さて、ここまではご理解いただけたと思います。
ユーザーによっては(私もその一人ですが)、タブを長時間起動しておくと、ユーザーにデータ削除の権限がある場合、そのようなことが起こる可能性があります。404エラーは、管理者にメールを送るよりも、削除されたリソースのエラーを処理するためのより良いエラーであるかもしれません。
他のユーザーが履歴からアドレスに移動する(データが削除されている場合も同じことが起こる可能性があるため)。
関連
-
[解決済み] SequelizeでfindOrCreateを使う方法
-
[解決済み] 多くのSQLiteデータベースをマージするにはどうすればよいですか?
-
[解決済み] SGBDとはどういう意味ですか?
-
[解決済み] Django エラー - 一致するクエリが存在しません。
-
[解決済み] Hibernateです。ManyToOne生成フィールドraw(255)
-
[解決済み] FactテーブルとDimensionテーブルの違い?
-
[解決済み] postgresql pg_dump の出力はどこに行くのでしょうか?
-
[解決済み] RuntimeWarning: DateTimeFieldがナイーブなdatetimeを受信した
-
[解決済み】Djangoモデル - 大文字小文字を区別しないクエリ/フィルタリング
-
[解決済み】Non-Repeatable ReadとPhantom Readの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】識別関係と非識別関係の違いとは?
-
[解決済み] データベースの記号は何を表しているのですか?
-
[解決済み] mongodb 4 データディレクトリ C:\data_dbdb not found
-
[解決済み] 検出された解決済みの移動がフライウェイのデータベースに適用されていない。
-
[解決済み] ベースとなるテーブルはどのように決定するのですか?
-
[解決済み] なぜ私のPerlスクリプトは "out of memory "例外で死んでしまうのですか?
-
[解決済み] Hibernateです。ManyToOne生成フィールドraw(255)
-
[解決済み] スキーマとテーブルとデータベースの違いは何ですか?
-
[解決済み】データベース、テーブルとカラムの命名規則?[クローズド]
-
[解決済み】phpMyAdmin - Error > Incorrect format parameter?