1

localhost:8000/admin にアクセスすると、「MultipleObjectsReturned at /admin/ get() return more than one Session -- it returned 2!」というエラーが表示されます。ルックアップ パラメータは {'session_key': 'ee5a8be487352e42a89f962ee4ab22a6', 'expire_date__gt': datetime.datetime(2011, 7, 8, 5, 38, 36, 645053)}' でした

mongodb にアクセスしてコレクション django_session 内の行の 1 つを削除すると動作しますが、コレクション django_session 内に別のドキュメントが作成されたため、しばらくすると同じエラーが表示されます

更新:ブラウザでも、セッションIDを保存したCookieを削除したところ、ページをスムーズに実行できました。次に、リンクを更新またはクリックすると、複数のオブジェクトが返されたというエラーが表示されます。

これは、ページを更新するたびにセッション ID を追加しようとする django の mongodb-engine の問題ですか。

4

2 に答える 2

1

テストにdjango.contribライブラリ(djangoの管理ライブラリが含まれています)を追加できなかったdjango-mongodb-engineの担当者に連絡しました。彼は、mulipleobjectreturnedエラーを取得せずにadminにアクセスできるようにする修正を追加しました。

これは問題を修正するコミットですhttps://github.com/django-mongodb-engine/mongodb-engine/issues/53):https://github.com/django-mongodb-engine/mongodb-engine/ commit / a0ab9c3f7c378828c2800b8f62f67c8e21255835

これが他の誰かに役立つことを願っています。

于 2011-07-12T07:35:13.647 に答える
1

デフォルトでは、MongoDB は_idフィールドに一意のインデックスを作成します。ただし、デフォルトでは一意ではないフィールドを使用しているように見えますsession_key。これは、2 つのエントリを取得する方法を説明している可能性があります。

使用中のインデックスを./mongo localhost:8000/admin --eval "db.system.indexes.find()"見て、これが単なるインデックスの問題ではないかどうかを確認してください。一意のインデックスの作成に関する情報は、ここにあります。

ドキュメントを作成するコードを確認することもできdjango_sessionます。エラーの原因となっている「正しくない」何かをしている可能性があります。

于 2011-07-10T06:55:10.793 に答える