DBAtlas · Atlas für Datenbankbetrieb

85 IndexOptionsConflict: Index already exists with different options / different name

MongoDB

Was 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.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank