ruby-on-rails – Ruby:SQLite3 :: BusyException:数据库被锁定:

进入这个错误消息,同时开发今晚:SQLite3 :: BusyException:数据库被锁定:

我有两个型号:

>播客有很多曲目
>轨道属于Podcasts。
> Podcast文件托管在mixcloud

创建播客:

>用户提交mixcloud上的播客的网址
> rails app抓取json feed与url相关联
> json用于在新的Podcast对象上设置属性(标题,图像等)

我试图让我的rails应用程序利用这个事实,json feed还详细说明属于这个播客的曲目的名称(和艺术家)。

我认为以下before_validation方法将自动创建所有相关的轨道,每当我们创建一个新的播客。

class Podcast < ActiveRecord::Base
  attr_accessible :mixcloud_url, :lots, :of, :other, :attrs
  has_many :tracks    
  before_validation :create_tracks
  def create_tracks
    json = Hashie::Mash.new HTTParty.get(self.json_url)    
    json.sections.each do |section|
      if section.section_type=="track"
          Track.create(:name=>section.track.name, :podcast_id=>self.id)
      end
    end             
  end
end

我怎么能绕过这个?看起来rails(或sqlite3)不喜欢我以这种方式创建一个关联模型的新实例。我怎么能这样做呢?我怀疑这是一个rails的问题,因为sqlite3一个。我可以发布更多的代码,如果它会帮助。

对于任何人遇到这个问题与SQLite锁定在开发中,当Rails控制台打开,请尝试这:

只需运行以下命令:

ActiveRecord::Base.connection.execute("BEGIN TRANSACTION; END;")

对我来说,似乎清除控制台持有并释放数据库的任何事务。

这对我来说尤其是一个问题,当我运行delayed_job,这似乎失败了关闭事务很频繁。

http://stackoverflow.com/questions/7154664/ruby-sqlite3busyexception-database-is-locked

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ruby-on-rails – Ruby:SQLite3 :: BusyException:数据库被锁定: