SQLite заблокирована (SQLITE_BUSY: database is locked)
- Платформы
- Paper · Purpur · Velocity · один сервер
- Проверено
- Проверено
- Уверенность
- Уверенность 80%
Как это выглядит в логе
Достаточно одной из строк. Агент сверяет их с логом локально, на вашем сервере.
logs/latest.log
[WARN] database is locked
Симптомы
- Запись плагина в SQLite падает: «[SQLITE_BUSY] The database file is locked (database is locked)»
Причина
Файл SQLite занят другой транзакцией или процессом дольше busy_timeout: плагин пишет из нескольких потоков/соединений или файл открыт ещё одним процессом.
Вероятные причины
- Плагин держит несколько соединений к одному файлу SQLite и пишет конкурентно (долгая транзакция блокирует остальных)
- Файл базы открыт другим процессом: второй экземпляр сервера на той же папке, бэкап/синхронизация, внешний просмотрщик БД
- Медленный диск/сетевая ФС (NFS, SMB) — блокировки SQLite работают плохо или долго
Как исправитьНизкий риск
- Убедитесь, что папку сервера использует только один процесс (нет второго запущенного экземпляра, внешних программ, открывших
.db). - Не держите файлы SQLite на сетевых дисках; перенесите сервер на локальный диск.
- Отключите бэкапы, копирующие
.db«на живую», или делайте их при остановленном сервере. - Для сети серверов и больших объёмов переведите плагин на MySQL/MariaDB — SQLite рассчитана на один процесс.
- Если ошибка в одном плагине — обновите его; сообщите автору, если он пишет в SQLite из нескольких потоков.