在我将单个用户添加到数据库后,似乎总是得到完全相同的错误。
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()
令人难以置信的是令人沮丧的是,我在过去两天基本上都在看这个。这不是我的代码中的东西。由于某种原因,它似乎没有生成ObjectId,因为它始终为null。我甚至不明白为什么会这样呢
我的代码只是
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)
答案 0 :(得分:0)
看起来您在objectId
字段上有一个额外的索引是唯一的
创建一个新用户时,它没有设置一个objectId字段值,并且由于它的唯一性,你不能有两个没有值的文档(因为它不是一个稀疏索引)。
在mongo shell中测试:
> use mydb
> db.user.getIndexes()
删除objectId_1
索引:
> db.user.dropIndex("objectId_1")
> db.user.getIndexes()