2016-11-21 6 views
1

Ich bekomme den oben genannten Fehler. Ich habe das vorhandene Datenbankfeld id gelöscht, das auf unique festgelegt wurde. Aber ich spare den unten Ausnahme bekamNotUiqueFehler: Versucht, doppelte eindeutige Schlüssel zu speichern

raise NotUniqueError(message % unicode(err)) 
NotUniqueError: Tried to save duplicate unique keys (E11000 duplicate key error index: test.users.$id_1 dup key: { : null }) 

Meine user Tabelle aussieht,

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} 

Ich habe auch versucht unsetting das id Attribut,

cls.objects.update(**{"unset__id": 1}) 

Aber es wirft diese Ausnahme,

raise OperationError(u'Update failed (%s)' % unicode(err)) 
OperationError: Update failed (Mod on _id not allowed) 

Ich möchte nur das Benutzermodell ohne id Feld speichern.

+0

Was ist die UserMixin-Klasse? – sergiuz

+0

ist es von flask_security-Paket 'aus flask.ext.security importieren UserMixin' –

Antwort

1

Bei Anruf list_indexes() wird ein eindeutiger Index für das Feld id angezeigt.

Sie müssen den eindeutigen Index für das Feld id in der Sammlung auch mit db.collection.dropIndex() löschen.

Ich bin mir nicht sicher, ob Mongoengine bietet eine drop_index Klassenmethode, aber Sie können dies aus der Shell tun.

Verwandte Themen