1

そこで、django を 1.4.5 に、postgres を 9.2.3 に、psycopg2 を 2.4.6 に更新しました。私runserverとすべてが問題ないように見えますが、セッション/ミドルウェア.py(36)localhost:8000に悪名高い「現在のトランザクションが中止されました..」と表示されます。request.session.save()

を実行syncdbしましmigrateたが、エラーや変更はありません。'DATABASES' - 'OPTIONS': {'autocommit': True, } にも追加しましたが、それでも役に立ちません。そして、私もこれを試しました:

from django.db import connection
connection._rollback()

ジャンゴシェルで。

また、次の方法で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ステートメントが表示されました。これには、内部DBエラーを引き起こしたものも含まれます。これは、私の場合はdjango-axesが原因でした(以前にバージョン1.2.9にアップグレードしました)。

django-axes では、特定のテーブルを作成する必要があります。syncdb を再実行しても問題は解決しませんでした。テーブルの 1 つに変更がありました (新しいフィールド - ユーザー名)。

python manage.py sqlclear axes-削除するテーブルを示したので、psqlに行ってそれを行いました。その後、もう一度実行しpython manage.py syncdbて更新されたテーブルを取得しました。

そして、__init__.py軸モジュール内のバグを見つけましたget_version()- 間違った文字列フォーマット。この混乱をすべて解決した修正:)

最後はハッピーエンド!

4

0 に答える 0