我正在查看由第三方進程擁有的SQLite數據庫。它看起來是鎖定的並且有一個* -journal文件。我不知道的是,如果鎖是共享的或排他性的。從鎖定的SQLite3數據庫中讀取
我希望從數據庫中讀取數據,即使它當前被其他進程鎖定。我只會從數據庫中讀取數據。
目前我在此失敗。只要第三方進程正在運行,我就會得到一個SQLITE_BUSY返回碼。
我看過sqlite3_busy_handler,但似乎並不是解決方案。據我所知,只允許實施一個重試機制。它似乎沒有提供一種方法來忽略數據庫被鎖定的事實。
如何強制SQLite從該數據庫讀取?
順便說一句,我目前使用FMDatabase API包裝。這不使用sqlite3_busy_handler。只要它獲得SQLITE_BUSY返回碼,它就會無休止地循環。
你是怎麼打開數據庫的? – kennytm 2010-02-20 10:50:05
int err = sqlite3_open(databasePath,&db); 還有其他方法嗎? – 2010-02-20 11:04:59
您是否有任何方法可以告訴其他進程是否已停用或處於磁盤睡眠狀態(可能)?鎖定(AFAIK)應該僅用於寫入。 – 2010-02-20 11:35:41