Site icon EfmSoft

Что означает код HRESULT 0x87AF0005 (SQLITE_E_BUSY)?

 
Предыдущий Следующий
SQLITE_E_ABORT SQLITE_E_LOCKED

SQLITE_E_BUSY

Что означает SQLITE_E_BUSY

SQLITE_E_BUSY (0x87AF0005) — SQLite не может продолжить операцию, потому что требуемая база или таблица занята другой операцией.

Этот HRESULT представляет основной или расширенный код результата SQLite. Для диагностики сохраняйте полный SQLite-код, SQL-выражение, параметры, состояние транзакции и соединения, режим журнала и исходную ошибку ОС; один внешний HRESULT без этих данных часто скрывает различие между блокировкой, ограничением и ошибкой ввода-вывода.

Это основной код результата SQLite 5 (SQLITE_BUSY). Обычно другая connection/transaction удерживает lock, который мешает текущей операции продолжить немедленно.

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

  • Сохраните состояние транзакции, режим журнала и источник конкурирующей записи.
  • Используйте sqlite3_busy_timeout()/busy handler только для ожидаемой краткой конкуренции, а не как маскировку долгой транзакции.
  • В WAL-режиме отдельно проверьте долгоживущие читающие транзакции и checkpoint, если WAL продолжает расти.

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


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

Exit mobile version