2013-10-09 3 views
0

나는 여러 스레드를 생성하고 각 스레드에서 데이터베이스를 업데이트해야하는 응용 프로그램이 있습니다. 난 단지 1 개 스레드를 생성하고 일련의 업데이트를 할 때, 모든 것이 괜찮지 만하려고 할 때 내가 로그에 오류를 얻을 멀티 쓰레드 :레일 SQLite3 DB 멀티 스레드 개체 업데이트 시도 잠금

sqlite3를 ::되는 SQLException : SQL 논리 오류 또는 데이터베이스 실종 : 롤백 트랜잭션 을 및 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) 

스레드 내부 서버를 통해 I 루프 (그래서 하나의 스레드가 생성 될 모든 것이 괜찮습니다)합니다. 내가 사용하고있는 데이터베이스는 SQLite3입니다.

+0

가 그냥 mysql2 보석과 MySQL의 업데이트, 문제를 해결 한 것으로 보인다. SQLite3을 작동시키지 못했습니다. –

답변