我有一个需要生成多个线程并在每个线程中更新数据库的应用程序。当我只产生 1 个线程并进行系列更新时,一切都很好,但是当我尝试多线程时,我在日志中收到错误:
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)
如果我在线程内循环服务器(所以只创建一个线程,一切都很好)。我使用的数据库是 SQLite3