DBAtlas · Атлас эксплуатации баз данных

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

MongoDB

Что это значит?

Создаваемый индекс конфликтует с существующим: у индекса с тем же именем другие параметры, либо эквивалентный индекс с тем же ключом и параметрами уже существует под другим именем. MongoDB не позволяет повторно создать тот же индекс с конфликтующим определением.

Почему возникает?

Создание индекса с тем же именем и ключом, но другими параметрами (например, expireAfterSeconds, partialFilterExpression, collation); либо переопределение эквивалента существующего индекса под другим именем ('Index already exists with a different name'). Типичная причина — расхождение определений индексов со временем в скриптах приложения/миграций. То же имя с другим ключом даёт вместо этого 86 IndexKeySpecsConflict.

Как исправить

Посмотрите существующий индекс: db.my_collection.getIndexes(). Если вы действительно хотите изменить параметры, удалите старый индекс и создайте новый: db.my_collection.dropIndex('index_name'), затем createIndex(...). В противном случае сделайте определение в точности совпадающим с существующим индексом или дайте новому индексу другое имя. Сделайте скрипты миграций идемпотентными.

Открыть в DBAtlas →

Ещё по этой СУБД