DBAtlas · Veritabanı operasyon atlası

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

MongoDB

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

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar