Site icon EfmSoft

Что означает код HRESULT 0x87AF0006 (SQLITE_E_LOCKED)?

 
Предыдущий Следующий
SQLITE_E_BUSY SQLITE_E_NOMEM

SQLITE_E_LOCKED

Что означает результат

SQLITE_E_LOCKED: SQLite сообщает SQLITE_LOCKED: операция конфликтует с блокировкой таблицы/schema/shared-cache внутри связанного database context. Это отличается от SQLITE_BUSY, где конкуренция обычно идёт между отдельными connections/processes.

Что проверить

  • Сохраните SQL statement, connection и transaction state.
  • Проверьте shared-cache, открытые cursors/prepared statements и незавершённые schema operations.
  • Закройте или reset statement, удерживающий внутреннюю блокировку, до retry.
  • Не лечите SQLITE_LOCKED только busy_timeout: он предназначен прежде всего для SQLITE_BUSY.

Диагностика и исправление

Освободите конфликтующую внутреннюю lock/statement и повторите операцию после корректного завершения transaction/cursor.

Ссылки по этому результату

Диагностика и проверка

SQLITE_LOCKED означает конфликт блокировки таблицы, schema или shared cache в текущем SQLite context. Зафиксируйте активные prepared statements/transactions на каждом connection и объект, который остаётся locked. Завершите statement либо транзакцию-владельца и повторите операцию. В отличие от BUSY_RECOVERY, здесь не требуется ждать внешнее восстановление journal; нужно освободить логическую SQLite lock внутри контекста.


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

Exit mobile version