NotUniqueError:试图保存重复的唯一键
问题描述:
我不断收到上述错误。我删除了已设置为唯一的现有数据库字段id
。但在保存我得到了下面的异常NotUniqueError:试图保存重复的唯一键
raise NotUniqueError(message % unicode(err))
NotUniqueError: Tried to save duplicate unique keys (E11000 duplicate key error index: test.users.$id_1 dup key: { : null })
我user
表的样子,
class Users(db.Document, UserMixin):
name = db.StringField(max_length=50)
email = db.StringField(max_length=255)
password = db.StringField(max_length=255)
city = db.StringField(max_length=125)
active = db.BooleanField(default=True)
company = db.StringField(max_length=255)
type = db.StringField(max_length=15)
confirmed_at = db.DateTimeField()
role = db.ReferenceField(Role)
meta = {'strict': False}
我也尝试取消设置使用id
属性,
cls.objects.update(**{"unset__id": 1})
但它抛出此异常,
raise OperationError(u'Update failed (%s)' % unicode(err))
OperationError: Update failed (Mod on _id not allowed)
我只想保存没有id
字段的用户模型。
答
如果调用list_indexes()
它会显示在id
领域的唯一指标。
您需要为使用db.collection.dropIndex()
以及下降的唯一索引上id
领域的收藏。
我不确定mongoengine是否提供了drop_index
类的方法,但可以从shell执行此操作。
什么是UserMixin类? – sergiuz
它来自flask.ext.security的flask_security包'import UserMixin' –