0

在我将单个用户添加到数据库后,它似乎总是得到完全相同的错误。

Tried to save duplicate unique keys (E11000 duplicate key error index: mydb.user.$objectId_1  dup key: { : null })

奇怪的是我从测试套件中完全复制了代码,即使这样也不起作用。我查看堆栈跟踪,问题总是在同一个地方

/usr/local/lib/python2.7/dist-packages/mongoengine/django/auth.py in set_password
264. self.save()

这令人难以置信的令人沮丧,我基本上在过去 2 天里一直在研究这个问题。这不是我的代码中的东西。由于某种原因,它似乎没有生成 ObjectId,因为它始终为空。我什至不明白为什么会这样

我的代码很简单

from mongoengine.django.auth import User
from django.contrib.auth import get_user_model

    user_data = {
        'username': 'user',
        'email': 'user@example.com',
        'password': 'test',
    }
    manager = get_user_model()._default_manager
    user = manager.create_user(user_data)
4

1 回答 1

0

看起来您在objectId唯一的字段上有一个额外的索引

创建新用户时,它没有设置 objectId 字段值,并且由于它的唯一性,您不能有两个没有值的文档(因为它不是稀疏索引)。

在 mongo shell 中进行测试:

> use mydb
> db.user.getIndexes()

删除objectId_1索引:

> db.user.dropIndex("objectId_1")
> db.user.getIndexes() 
于 2013-07-02T18:30:34.037 回答