我终于将我的项目发布到了生产级别,突然间我有了一些在开发阶段从未需要处理的问题.

当用户发布一些操作时,我有时会收到以下错误.

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

真正让我沮丧的是,该项目在本地环境中运行良好,而且数据库中确实存在匹配的查询对象.

现在我怀疑用户正在访问数据库,而数据库是为其他用户保留的,但是没有办法证明我的论点,我也没有任何解决方案.

以前有没有人有过这样的问题?对如何解决这个问题有什么建议吗?

非常感谢您事先的帮助.

编辑:我已经使用从收到的服务器错误邮箱中检索到的相同信息手动查询了数据库.我能够毫不费力地击中入口处.此外,似乎用户执行的完全相同的行为在大多数情况下不会引发任何问题,但在某些情况下(这一点尚不清楚).总而言之,数据库中缺少条目绝对不是问题.

推荐答案

引发错误的代码行如下所示:

comment = Comment.objects.get(pk=comment_id)

您try 访问不存在的 comments .

from django.shortcuts import get_object_or_404

comment = get_object_or_404(Comment, pk=comment_id)

您的服务器上不会出现错误,而是您的用户将得到404,表示他试图访问不存在的资源.

好了,到目前为止,我想你已经意识到了这一点.

有些用户(我也是其中的一员)让选项卡运行很长时间,如果用户被授权删除数据,这种情况可能会发生.与向管理员发送邮箱相比,404错误可能是处理已删除资源错误的更好错误.

其他用户从他们的历史记录转到地址(如果数据可能会被删除,情况也一样).

Database相关问答推荐

网络分区恢复后副本的更新数据发生了什么

为什么 INNER JOIN 不等于(!=)永远挂起

Spring Data JPA 对 SQL 注入安全吗

在sql server中拆分字符串

当使用多个 WHEN MATCHED 语句时,它们是全部执行,还是只执行一个?

将整数作为字符串存储在数据库中的缺点

单向和双向关系关系的区别

Select 最佳主键 + 编号系统

返回 SQLite 数据库中表大小的查询

Hibernate、spring、JPS 和隔离 - 不支持自定义隔离

Oracle (ORA-02270) : no matching unique or primary key for this column-list error

如何在数据库中搜索和替换字符串的所有实例?

日期范围重叠判断约束

如何在远程服务器上备份 MySQL 数据库?

MySQL相对于其他数据库的缺点

日期格式的 Oracle SQL 查询

您是否应该将自引用表列设为外键?

以可能的数据丢失为代价提高 PostgreSQL 写入速度?

LevelDB 支持 java 吗?

DBMS中数据模型和数据库模式的区别?