85 IndexOptionsConflict: Index already exists with different options / different name
MongoDBWas bedeutet das?
Der anzulegende Index kollidiert mit einem vorhandenen: Ein Index mit demselben Namen hat andere Optionen, oder ein gleichwertiger Index mit demselben Schlüssel und denselben Optionen existiert bereits unter einem anderen Namen. MongoDB lässt nicht zu, denselben Index mit einer widersprüchlichen Definition neu anzulegen.
Ursache
Anlegen eines Index mit demselben Namen und Schlüssel, aber anderen Optionen (z. B. expireAfterSeconds, partialFilterExpression, collation); oder Neudefinition eines Äquivalents eines vorhandenen Index unter anderem Namen ('Index already exists with a different name'). Typische Ursache sind Indexdefinitionen, die in Anwendungs-/Migrationsskripten mit der Zeit auseinanderlaufen. Derselbe Name mit anderem Schlüssel liefert stattdessen 86 IndexKeySpecsConflict.
Lösung
Vorhandenen Index anzeigen: db.my_collection.getIndexes(). Willst du die Optionen wirklich ändern, lösche den alten Index und lege den neuen an: db.my_collection.dropIndex('index_name') dann createIndex(...). Andernfalls bringe die Definition exakt mit dem vorhandenen Index in Übereinstimmung oder gib dem neuen Index einen anderen Namen. Mache Migrationsskripte idempotent.
Weitere Einträge zu dieser Datenbank
- 20 IllegalOperationIllegal operation
- 48 NamespaceExistsNamespace (collection) already exists
- 11601 InterruptedOperation was interrupted
- 67 CannotCreateIndexCannot create index
- 27 IndexNotFoundIndex not found
- 79 UnknownReplWriteConcernUnknown replica set write concern
- 10107 NotWritablePrimarynot master / not writable primary