**Software Versions:**
Rails 3.1.3
MySQL 5.5.21
OS: MacOS 10.7.3
今日、私は外国人の宝石と多くの外来キー制約をMySQL DBに追加しました。 しかし、今、私は、単純な挿入の「ロック待ちタイムアウト」の例外を取得:MySQLの外部キーの制約により、Rails 3.1アプリケーションでActiveRecord :: StatementInvalid(ロック待ちタイムアウト)が発生する
ActiveRecord::StatementInvalid (Mysql2::Error: Lock wait timeout exceeded;
try restarting transaction
私は私のDBから外部キーcontraintsを削除した場合、問題がなくなっています。
i "がaccepts_nested_attributes_for" と "has_oneの" 関連のデータを持つオブジェクトを追加しようとすると問題が起こる:私はせずに "PrimaryData" を作成した場合
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)
"SubData"、または "PrimaryData"と "SubData"を別々に取得すると、MySQLのエラーは発生しません。ただし、 "PrimaryData"をいくつかの "SubData"を使って "accepts_nested_attributes_for"に作成しようとしています。
誰でもこの問題を解決できますか? ありがとうございます。
私は前にこの問題を見たことがあると思いますが、私はかなりの文脈で覚えていません。それはあなたが記述したものと同じではありませんでした。私はサーバーとMySqlの簡単な再起動で私の問題を解決したことを覚えているようだ。私は間違っているかもしれません... – Pete
どのエンジンを使用しますか? InnoDBまたはMyISAM?アプリクラッシュ時にログのサンプルを投稿できますか?あまり遅れていないのであれば:) – basgys