因此,我将 django 更新为 1.4.5 ,将 postgres 更新为 9.2.3 ,将 psycopg2 更新为 2.4.6 。我runserver
和一切看起来都很好,但是当我去的时候,我在 session/middleware.py(36) 中localhost:8000
看到了臭名昭著的“当前事务中止..” 。request.session.save()
我跑了syncdb
,migrate
没有任何错误或更改。我还在 'DATABASES' - 'OPTIONS' 中添加了:{'autocommit': True, },但仍然没有帮助。我也试过这个:
from django.db import connection
connection._rollback()
在 Django 外壳中。
我还尝试通过以下方式阻止 postgres:
pg_ctl -D /usr/local/var/postgres stop -s -m fast
我得到:
pg_ctl: server does not shut down
运行pg -ef|grep postgres
显示没有挂起的查询。
我该如何解决这个块?如何查找是什么原因造成的?
答: 我为解决此错误所做的总结
我启用了 sql 日志记录:
DEBUG=True
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'django.utils.log.NullHandler',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
}
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'DEBUG',
},
}
}
这向我展示了正在执行的所有 sql 语句,包括导致内部数据库错误的语句,在我的情况下,这是由 django-axes 引起的(我之前将其升级到版本 1.2.9)。
django-axes 需要创建某些表。重新运行 syncdb 并没有解决我的问题,因为其中一个表(新字段 - 用户名)内部发生了变化。
python manage.py sqlclear axes
- 向我展示了要删除的表,所以我去了 psql 并做到了。之后我再次运行python manage.py syncdb
并获得更新的表格。
然后我在__init__.py
轴模块中发现了一个错误,get_version()
错误的字符串格式。修复它解决了所有这些混乱:)
终于,美满的结局!