**Software Versions:**
Rails 3.1.3
MySQL 5.5.21
OS: MacOS 10.7.3
今天,我加入了很多的外键约束与外国人宝石我的MySQL数据库。 但现在我得到简单插入“锁定等待超时”例外:MySQL的外键约束在我的Rails的ActiveRecord抛出:: StatementInvalid(锁等待超时)3.1应用
ActiveRecord::StatementInvalid (Mysql2::Error: Lock wait timeout exceeded;
try restarting transaction
如果我从数据库中删除外键约束上的问题了。
当我试图用数据添加对象的“HAS_ONE”伴随“accepts_nested_attributes_for”的问题发生:
class MyApp::PrimaryData < ActiveRecord::Base
has_one :sub_data, :dependent => :destroy
accepts_nested_attributes_for :sub_data
[...]
end
class MyApp::SubData < ActiveRecord::Base
belongs_to :primary_data
attr_accessible :field1, :field2
[...]
end
table: primary_data
-------------------
- id (integer)
- field1 (string)
[...]
table: sub_data
---------------
- id (integer)
- primary_data_id (integer)
- field1 (string)
- field2 (string)
[...]
-> foreign_key_contraint on primary_data_id --> table primary_datas (id)
如果我只是创建了“PrimaryData”无“子数据”,或“PrimaryData”和“子数据”分开,那么我不会收到MySQL错误,只有当我尝试通过Rails“accep_nested_attributes_for”方式创建带有“子数据”的“PrimaryData”时。
有没有人可以帮助我解决这个问题? 在此先感谢。
我想我以前见过这个问题,但我不太清楚在什么情况下;它与你所描述的不一样。我似乎记得我通过简单的服务器和MySql重启来解决了我的问题。我可能是错的,但... – Pete 2012-04-20 15:55:37
你使用哪个引擎? InnoDB或MyISAM?当应用程序崩溃时,您可以发布日志样本吗?如果当然不是太晚:) – basgys 2012-09-15 16:49:35