データベースの情報を更新するのに苦労しています。元々、変更を保存しようとすると、データベースがロックされているというエラーが表示されます。
SQLite3::BusyException: cannot rollback transaction - SQL statements in progress: rollback transaction
問題のデーモンは次のとおりです。
require 'daemons'
require File.expand_path(
File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
Daemons.run_proc('clock.rb')do
daemon_log = ActiveSupport::BufferedLogger.new(
File.join(Rails.root, "log", "clock.log"))
Rails.logger = ActiveRecord::Base.logger = daemon_log
Rails.logger = ActiveRecord::Base.logger.info("running clock.rb")
Rails.logger = ActiveRecord::Base.logger.info("Information Retrieved")
UserStats = UgloungeSkills.find(:all)
loop do
Rails.logger = ActiveRecord::Base.logger.info("running main loop")
UserStats.each do |row|
powerLevel = row['taming'] + row['mining'] + row['woodcutting'] + row['repair'] + row['unarmed'] + row['herbalism'] + row['excavation'] + row['archery'] + row['swords'] + row['axes'] + row['acrobatics'] + row['fishing']
userName = UgloungeUser.find(row['user_id'])['user']
McMMO_id = row['user_id']
if(User.exists?(name: userName))
#Update it
singleUser = User.find(McMMO_id)
Rails.logger = ActiveRecord::Base.logger.info("Just updating information")
Rails.logger = ActiveRecord::Base.logger.info("User: " + singleUser['name'])
#Rails.logger = ActiveRecord::Base.logger.info("Values of power_level and McMMO_id: " + powerLevel)
singleUser.name = "Poopyhead"
singleUser.save
#singleUser.update_attributes(power_level: powerLevel, mcmmo_id: McMMO_id)
Rails.logger = ActiveRecord::Base.logger.info("Finished updating")
else
#Create a new user
Rails.logger = ActiveRecord::Base.logger.info("Creating new user")
User.create(name: userName, power_level: powerLevel, mcmmo_id: McMMO_id)
end
end
sleep(120)
Rails.logger = ActiveRecord::Base.logger.info("Sleeping")
end
end
私は sqlite を使用して情報を保存するだけです。他のデータベースは、読み取り専用の MySQL データベースです。どんな助けでも大歓迎です。