0
我有一個使用多個sqlite3的數據庫Rails應用程序(這部分是不可轉讓),我有以下類軌HAS_MANY通過和多個數據庫SQLite的造成:: BusyException
class User < ActiveRecord::Base
establish_connection "users_#{Rails.env}" # use alternate DB
has_many :memberships
has_many :groups, through => :memberships
end
class Group < ActiveRecord::Base
establish_connection "users_#{Rails.env}" # use alternate DB
has_many :memberships
has_many :users, :through => :memberships
end
class Membership < ActiveRecord::Base
belongs_to :group
belongs_to :user
# validations stuff
establish_connection "users_#{Rails.env}" # use alternate DB
end
當我創建用戶與一組,我收到了以下幾點:
ActiveRecord::StatementInvalid (SQLite3::BusyException: database is locked: INSERT INTO "memberships" ...
然而,當我刪除「establish_connection」方法調用,並使用單一的默認數據庫,一切工作正常,並符合市場預期。
我試着增加database.yml中的超時時間爲15秒,但同樣的異常只需要更長的時間才能出現。
權限在默認數據庫上與用戶數據庫相同,因此默認數據庫工作正常,所以問題不大。已嘗試從頭開始刪除並重新創建數據庫。那裏沒有運氣。數據庫20秒的超時只會讓應用程序暫停20秒,然後拋出相同的異常。我甚至嘗試了1分鐘的超時時間,但同樣的錯誤發生。也許是時候去挖掘rails的establish_connection源碼了 – 2011-05-08 23:29:10