python - Django/psycopg2/postgresql 可能损坏的模型给出了无用的堆栈跟踪

标签 python django postgresql stack-trace

我正在努力将 OpenID 与我自己的 Django 身份验证堆栈集成。我正在使用 python-openid,django 1.2.5 和 postgresql,遵循 examples/

下 djopenid 文件夹中的示例

事情是这样的。我正在使用一个调用 python-openid 的各种机制的 View ,这些机制依赖于我输入的模型。在那里的某个地方,有东西​​坏了。我的问题不是为什么它坏了,而是我无法告诉什么坏了。我的模型是直接根据他们的实现意见编写的,但我可能犯了一两个错误。

这是堆栈跟踪:

mod_wsgi (pid=5476): Exception occurred processing WSGI script 
'/var/www/Django/Testbed/Testbed.wsgi'., referer: 
http://localhost/testbed/openidlogin
 Traceback (most recent call last):, referer: 
http://localhost/testbed/openidlogin
   File "/usr/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 
252, in __call__, referer: http://localhost/testbed/openidlogin
     response = middleware_method(request, response), referer: 
http://localhost/testbed/openidlogin
   File 
"/usr/lib/python2.7/site-packages/django/contrib/sessions/middleware.py", line 
36, in process_response, referer: http://localhost/testbed/openidlogin
     request.session.save(), referer: http://localhost/testbed/openidlogin
   File 
"/usr/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py", line 
61, in save, referer: http://localhost/testbed/openidlogin
     sid = transaction.savepoint(using=using), referer: 
http://localhost/testbed/openidlogin
   File "/usr/lib/python2.7/site-packages/django/db/transaction.py", line 229, 
in savepoint, referer: http://localhost/testbed/openidlogin
     connection._savepoint(sid), referer: http://localhost/testbed/openidlogin
   File "/usr/lib/python2.7/site-packages/django/db/backends/__init__.py", line 
56, in _savepoint, referer: http://localhost/testbed/openidlogin
     self.cursor().execute(self.ops.savepoint_create_sql(sid)), referer: 
http://localhost/testbed/openidlogin
   File "/usr/lib/python2.7/site-packages/django/db/backends/util.py", line 15, 
in execute, referer: http://localhost/testbed/openidlogin
     return self.cursor.execute(sql, params), referer: 
http://localhost/testbed/openidlogin
   File 
"/usr/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py
", line 44, in execute, referer: http://localhost/testbed/openidlogin
     return self.cursor.execute(query, args), referer: 
http://localhost/testbed/openidlogin
 DatabaseError: current transaction is aborted, commands ignored until end of 
transaction block, referer: http://localhost/testbed/openidlogin

所以我知道 django 正在使用 postgresql transaction management并且在这个过程中的某处,我正在做一些导致数据库完整性问题的事情。但它没有告诉我那可能是什么,也没有告诉我代码中的错误所在。我试过了 turning this offsettings.py 中查看是否有更合理的堆栈跟踪结果。它没有。

我的问题很简单:如何找出问题出在哪里?我可以从有问题的 SQL 语句向后工作(因为它会告诉我哪些模型失败了),甚至更好的是涉及我的一些代码的堆栈跟踪。甚至“postgresql error code XYZ”也给了我一些东西去谷歌。是否有一些我可以打开的设置使 django 更健谈?我正在使用

DEBUG = True
TEMPLATE_DEBUG = DEBUG

很明显,但我什至没有收到黄色错误页面。只是普通的旧 500 内部服务器错误和 apache 错误日志中的堆栈跟踪。还有别的地方我可以看吗?一些我可以制定的选项或一些我可以用来观察执行或其他东西的神奇工具?

最佳答案

在某个端口上通过 manage.py 运行它,在您的 View 中调用 ipdb.set_trace() 并逐步跟踪它 - 就像在任何其他调试过程中一样。

您也可以使用 built-in python/django logging features并将我们的内容打印到日志文件中。

here获取更多提示 - 也许其中一些对您有用。

关于python - Django/psycopg2/postgresql 可能损坏的模型给出了无用的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5128713/

相关文章:

postgresql - 在 Eclipse 中创建的 JDBC 连接无法正常工作

python - 如何在Python中使元组的子类可哈希?

python - 如何覆盖 django rest 框架( DRF )中的 Response 类?

Django - models.ForeignKey

python - 使用当前日期调整 Django CharField 中的选择

sql - 从 UTC 日期和时间获取时间戳

python - 在 1&1 共享主机上部署 Flask 应用程序(使用 CGI)

python - 在 numpy 中,如何有效地列出所有固定大小的子矩阵?

django - 在 Django 2.0 中按字段值排序

sql - 用于继承用户权限的 postgres 新模式