2015-06-04 82 views
0

sqlite3_step()返回頻繁SQLITE_LOCKED,儘管DOC說:sqlite的WAL塊它不

WAL提供了更多的併發作爲讀者不會阻止作家和作家 不會阻止讀者。閱讀和寫作可以同時進行 。

我有兩個線程,每個線程都有一個連接。 WAL打開,共享緩存打開。選擇多線程模式(打開時傳遞SQLITE_OPEN_NOMUTEX)。發生此問題時,鎖定的線程只能讀取(其他線程正在寫入)。 我錯過了什麼嗎?

謝謝!

+0

你看到的常見問題(問題5和6(穿線?http://www.sqlite.org/faq.html#q5 – Jay

+0

是的,但https://www.sqlite.org/wal.html暗示WAL打開任意數量的讀取和1寫入可以同時進行而不會阻塞 –

+0

我看不到任何在不同線程上提及「在不同線程上讀取和寫入」的內容*,它們只在單獨的線程上提到檢查點 – Jay

回答

0

原來我的理解是正確的,但鎖定的問題從共享緩存起來,我需要把它們關掉。這樣就沒有SQLITE_LOCKED錯誤。寫入時有時仍會出現SQLITE_BUSY錯誤,在這種情況下,我需要重試,或者在事務,回滾和重試事務處於中間的情況下。

希望這可以幫助別人!

相關問題