[英]How to wait for the database lock to clear in system.data.sqlite
我的應用程序以以下方式工作:每個查詢使用sqlite3打開一個到數據庫文件的新連接,並且在查詢運行后,它使用close()方法關閉該連接。
問題:我的應用程序創建的另一個線程需要執行INSERT查詢,但是在這種情況下,我的應用程序的“主體”主體正在執行某些SELECT,它們似乎發生沖突,並且由於sqlite不允許在該處進行選擇和更新。同時,它解決問題。 即,應用程序凍結30秒,此后sqlite連接超時,我得到:
A first chance exception of type 'System.Data.SQLite.SQLiteException' occurred in System.Data.SQLite.dll
System.Data.SQLite.SQLiteException (0x80004005): database is locked
有什么方法可以指示查詢等待鎖清除,然后再嘗試繼續? 還是其他解決問題的方法?
那30秒就是等待。
您可以使用PRAGMA busy_timeout或相應的連接參數來增加等待時間,但是如果某些事務阻塞數據庫的時間長於此時間,則這無濟於事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.