Ошибки · Решение
SQLite SQLITE_LOCKED (6): конфликт lock внутри connection/shared cache
В отличие от SQLITE_BUSY, блокирующий конфликт находится в том же connection/shared-cache контексте.
Короткий ответ
SQLITE_LOCKED (6) означает конфликт внутри той же database connection или между connections, использующими shared cache.
Что означает ошибка
В отличие от SQLITE_BUSY, блокирующий конфликт находится в том же connection/shared-cache контексте.
Возможные причины
- Statement продолжает читать объект, который другой operation пытается изменить.
- Shared-cache connection удерживает lock на записи/схеме.
- Код повторно использует connection между потоками без корректной координации.
Что проверить
- Найдите одновременно активные prepared statements на connection.
- Проверьте, закрываются ли cursors/statements после чтения.
- Если включён shared cache, установите, нужен ли он вообще приложению.
Безопасные шаги
- Завершите/финализируйте читающий statement до конфликтующей schema/write операции.
- Сериализуйте работу с connection согласно threading model SQLite.
- Уберите shared-cache зависимость, если она создаёт ненужные внутренние locks.
Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.
Когда нужен сервис
- Повторяющийся SQLITE_LOCKED в многопоточном коде требует проверки жизненного цикла connection и statements.
Похожие ошибки
- /errors/sqlite-busy-5/
- /errors/sqlite-readonly-8/
- /errors/sqlite-interrupt-9/
Что учитывать
Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.
Официальный источник
Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.