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(...). В противном случае сделайте определение в точности совпадающим с существующим индексом или дайте новому индексу другое имя. Сделайте скрипты миграций идемпотентными.
Ещё по этой СУБД
- 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