1

因此,我将 django 更新为 1.4.5 ,将 postgres 更新为 9.2.3 ,将 psycopg2 更新为 2.4.6 。我runserver和一切看起来都很好,但是当我去的时候,我在 session/middleware.py(36) 中localhost:8000看到了臭名昭著的“当前事务中止..” 。request.session.save()

我跑了syncdbmigrate没有任何错误或更改。我还在 '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()错误的字符串格式。修复它解决了所有这些混乱:)

终于,美满的结局!

4

0 回答 0