Что означает код HRESULT 0xC800057B (hrIndexDuplicate)?

 
Предыдущий Следующий
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; это другой конфликт.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.