Можно ли открыть заблокированную базу данных sqlite в режиме только для чтения? - PullRequest
12 голосов
/ 22 октября 2011

Я хотел бы открыть данные сайта хрома (в ~ / .config / chromium / Default) с помощью python-sqlite3, но он блокируется всякий раз, когда хром работает, что понятно, так как транзакции могут быть сделаны.Есть ли способ открыть его в режиме только для чтения, гарантируя, что я не смогу нарушить целостность БД, пока его использует хром?

Ответы [ 2 ]

8 голосов
/ 22 октября 2011

Я полагаю, что это зависит от блокировки, установленной транзакцией.

http://www.sqlite.org/lockingv3.html#shared_lock http://www.sqlite.org/lang_transaction.html

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

Так что это действительно зависит от транзакций, используемых Chromium.

4 голосов
/ 22 октября 2011

Chromium долго удерживает блокировку базы данных?Тьфу!Это действительно не очень хорошая идея.Тем не менее, не ваша ошибка ...

Вы можете просто скопировать файл базы данных (например, с помощью системной утилиты cp) и использовать этот снимок для чтения;SQLite сохраняет все свои зафиксированные состояния в одном файле для каждой базы данных.Да, есть вероятность увидеть частичную транзакцию, но у вас точно не будет проблем с блокировкой в ​​Unix, поскольку SQLite определенно не использует обязательные блокировки.(Это может не работать в Windows из-за другой схемы блокировки.)

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