2013-10-09 73 views
0

我有一個應用程序需要產生多個線程,並在每個線程更新數據庫。當我只產卵1個線程,並做更新的系列,一切都很好,但是當試圖多線程我在日誌中出現錯誤:Rails嘗試多線程對象更新的SQLite3數據庫鎖

的SQLite3 ::的SQLException:SQL邏輯錯誤或丟失的數據庫:ROLLBACK TRANSACTION 和 SQLite3 :: BusyException:數據庫被鎖定

我假設鎖定是因爲第一個錯誤。

這是導致問題的代碼:

all_threads = [] 
servers.each do |server| 
    all_threads << Thread.new(server) do |svr| 
    serverCurrent = Server.find(svr.id) 
    serverCurrent.state = 3 
    serverCurrent.save 
    end 
end 
all_threads.each(&:join) 

如果我遍歷所有的線程內服務器(因此只創建一個線程,一切都很好)。我正在使用的數據庫是SQLite3

+0

剛剛更新與mysql2寶石MySQL的,似乎已經解決了這一問題。無法讓SQLite3工作。 –

回答