2013-07-02 20 views
0

在將單個用戶添加到數據庫之後,似乎總會看到完全相同的錯誤。Mongoengine create_user函數生成null objectId的

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': '[email protected]', 
     'password': 'test', 
    } 
    manager = get_user_model()._default_manager 
    user = manager.create_user(user_data) 

回答

0

看起來你有一個objectId場額外的指數是唯一

當創建一個新用戶的不設置一個objectId字段值,並且作爲唯一你不能有兩個沒有值的文檔(因爲它不是一個稀疏索引)。

爲了測試在蒙戈殼:

> use mydb 
> db.user.getIndexes() 

掉落的objectId_1指數:

> db.user.dropIndex("objectId_1") 
> db.user.getIndexes()