85 IndexOptionsConflict: Index already exists with different options / different name
MongoDBNe demek?
Oluşturmaya çalıştığınız index, mevcut bir index ile çakışıyor: aynı ada sahip index farklı seçenekler taşıyor ya da aynı anahtar ve seçeneklere sahip eşdeğer bir index başka bir adla zaten var. MongoDB, çakışan tanımla aynı index'i yeniden oluşturmanıza izin vermez.
Neden olur?
Aynı ad ve anahtarla farklı seçeneklerle (ör. expireAfterSeconds, partialFilterExpression, collation) index oluşturmaya çalışmak; ya da var olan bir index'in eşdeğerini farklı bir adla yeniden tanımlamak ('Index already exists with a different name'). Uygulama/migration betiklerinde index tanımının zamanla değişmesi tipik nedendir. Aynı ad ama farklı anahtar ise 86 IndexKeySpecsConflict verir.
Nasıl çözülür?
Var olan index'i görün: db.koleksiyon.getIndexes(). Seçenekleri gerçekten değiştirmek istiyorsanız eski index'i düşürüp yenisini oluşturun: db.koleksiyon.dropIndex('indeks_adi') sonra createIndex(...). Aksi halde tanımı mevcut index ile birebir eşleştirin ya da yeni index'e farklı bir ad verin. Migration betiklerini idempotent yapın.
Aynı motorda diğer kayıtlar
- 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