2017-02-15 61 views
0

我以前曾經觀察到,當我圍繞原子事務(django) - 0.3秒沒有事務和0.004秒事務時,sqlite數據庫寫入速度顯着加快。因此,我在整個項目中應用了交易。奇怪的是,之後我開始遇到'數據庫被鎖定'錯誤,這導致我調試它以發現當更新在事務上運行(讓我們稱它爲更新A)並且當我嘗試同時運行另一個更新(B)時,通過事務處理,它會立即失敗,而不會等待超時(默認爲5秒)。但是當我嘗試在沒有事務的情況下運行更新B時,它等待A完成並完成更新。任何人都可以爲我提供一個可能的解釋,不包括刪除交易。在原子事務中使用sqlite3時'數據庫被鎖定'錯誤

回答

0

SQLite的超時時間可以設置爲PRAGMA busy_timeout

默認值爲零,並且此設置僅適用於連接(而不是數據庫),因此看起來好像並非所有連接都具有這些5秒。

確保所有連接都通過執行該PRAGMA設置了適當的超時時間。 (五秒鐘很危險,最好用三十秒鐘。)

相關問題