Как мы узнаем статус блокировки базы данных sqlite? - PullRequest
5 голосов
/ 07 января 2011

1) Есть ли прагма или какой-либо способ узнать текущее состояние блокировки sqlite db ?.2) Кроме того, есть ли способ узнать, использует ли БД какой-либо другой процесс?.

Ответы [ 2 ]

3 голосов
/ 07 января 2011

Относительно # 1: Нет, потому что полученный вами ответ был бы сразу устаревшим (то есть, если вы получили ответ «нет, база данных не заблокирована», кто-то другой мог бы прийти и немедленно заблокировать ее, оставив вас сплохая информация).

Правильный подход состоит в том, чтобы просто попробовать свою операцию (опционально с тайм-аутом) и посмотреть, удастся ли она.

2 голосов
/ 07 января 2011

Нет прагмы, но в FAQ говорится:

Когда SQLite пытается получить доступ к файлу, заблокированному другим процессом, по умолчанию возвращается SQLITE_BUSY.

Однако это означает, что база данных заблокирована для записи, а не для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...