【发布时间】:2013-07-22 17:49:55
【问题描述】:
我终于将我的项目发布到生产级别,突然间我遇到了一些我在开发阶段从未处理过的问题。
当用户发布一些操作时,我有时会收到以下错误。
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)验证id存在于数据库中 -
"python manage.py sqlall" 将生成与您的模型对应的 SQL。检查它是否对应于数据库模式 SQL。例如,如果使用 PostgreSQL,它也可能是一个顺序问题。结论:你能带来更多关于你的环境的信息(SQDB、DB、DB中的对应表和models.py中的代码,...)吗?
-
@Ricola3D 您好 Ricola,我目前正在使用从 Amazon EC2 实例托管它的 MySql DB。我暂时使用的是内置的 Django Comment。同时,我将尝试运行您建议的 sqlall 命令。谢谢。
标签: database django django-models production