나는 여러 스레드를 생성하고 각 스레드에서 데이터베이스를 업데이트해야하는 응용 프로그램이 있습니다. 난 단지 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입니다.
가 그냥 mysql2 보석과 MySQL의 업데이트, 문제를 해결 한 것으로 보인다. SQLite3을 작동시키지 못했습니다. –