| Предыдущий | Следующий |
| hrIndexHasPrimary | hrIndexNotFound |
hrIndexDuplicate
Что означает hrIndexDuplicate
hrIndexDuplicate (0xC800057B) — индекс уже определён.
Это старый HRESULT-вариант результата ESE (Extensible Storage Engine, ESENT); в JET API соответствующее условие известно как JET_errIndexDuplicate.
Что проверить
- Зафиксируйте текущий индекс, его сегменты и флаги, а также фактически построенный ключ. Ошибка определения индекса отличается от ошибки позиции курсора или конфликтующего ключа.
- После изменения индексируемых столбцов заново проверьте позицию курсора; для unique/primary индекса отдельно исследуйте ключ конфликтующей записи.
Практический смысл и диагностика
- Index с запрошенным именем либо эквивалентным definition уже существует в ESE table.
- Сравните существующий index с ожидаемым: при полной эквивалентности migration можно пропустить idempotently, иначе version/replace выполняйте явно.
- Проверьте lifecycle `JetCreateIndex`, `JetDeleteIndex`, `JetSetCurrentIndex`, `JetMakeKey`, `JetSeek`, `JetSetIndexRange` и schema migration.
- `hrIndexHasClustered` означает, что table уже имеет clustered index и не может принять второй clustered layout; это другой конфликт.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.