| Предыдущий | Следующий |
| 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 продолжает расти.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
