Ошибки · Решение
SQLite SQLITE_BUSY (5): база занята другой connection
Это конфликт с внешней connection: SQLite не получил необходимый file/database lock в текущий момент.
Короткий ответ
SQLITE_BUSY (5) означает, что SQLite не может продолжить чтение/запись из-за concurrent activity другой database connection, обычно в другом процессе.
Что означает ошибка
Это конфликт с внешней connection: SQLite не получил необходимый file/database lock в текущий момент.
Возможные причины
- Другая connection держит write transaction.
- Второй процесс начинает запись пока первый writer ещё не завершился.
- Busy timeout отсутствует или слишком мал для ожидаемой конкуренции.
Что проверить
- Определите, какие процессы/connection одновременно работают с файлом.
- Проверьте transaction duration и режим journal/WAL.
- Смотрите, на каком statement впервые возникает BUSY: begin, write или commit.
Безопасные шаги
- Сократите транзакции и завершайте COMMIT/ROLLBACK быстро.
- Для ожидаемого краткого contention настройте `sqlite3_busy_timeout`/busy handler.
- Для предсказуемого writer acquisition рассмотрите BEGIN IMMEDIATE там, где это соответствует логике.
Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.
Когда нужен сервис
- Если SQLITE_BUSY возникает постоянно при штатной нагрузке, архитектуре может требоваться очередь записей или серверная СУБД.
Похожие ошибки
- /errors/sqlite-locked-6/
- /errors/sqlite-readonly-8/
- /errors/sqlite-interrupt-9/
Что учитывать
Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.
Официальный источник
Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.