Что означает код HRESULT 0x87AF0205 (SQLITE_E_BUSY_SNAPSHOT)?

 
Предыдущий Следующий
SQLITE_E_ABORT_ROLLBACK SQLITE_E_READONLY_CANTLOCK

SQLITE_E_BUSY_SNAPSHOT

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

SQLITE_E_BUSY_SNAPSHOT (0x87AF0205) — База данных занята из-за конфликта со снимком.

Значение относится не ко всему компоненту «SQLite», а к связке «занятая база, снимок транзакции SQLite»; до очистки состояния важно разделить ожидание, нагрузку и недоступность.

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

Когда исходная операция завершается сообщением «база данных занята из-за конфликта со снимком», разделите время ожидания очереди, сети, сервера и локального ввода-вывода; повтор оправдан только после наблюдаемого изменения состояния или нагрузки.

С первым HRESULT по теме «занятая база, снимок транзакции SQLite» сопоставьте полный extended result code, SQL, параметры, режим journal, путь к базе и состояние транзакции.

Не потеряйте данные PRAGMA wal_checkpoint(PASSIVE);, WAL: без них трудно отделить тему «занятая база, снимок транзакции SQLite» от последующего сбоя.

PRAGMA wal_checkpoint(PASSIVE);

Повторите операцию в том же окружении и сравните первый отличающийся вызов; для результата 0x87AF0205 этого надёжнее, чем единичный успешный запуск на других данных.

Документация для результата 0x87AF0205: коды результатов и ошибок SQLite · режим Write-Ahead Logging SQLite · SQLite: Set a busy timeout.


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