私は定期的にこれは私のモデル、全部で約6のほとんどのために起こるTransient Mysql :: Error:トラフィックの多いサイトで重複するエントリ - 何か考えですか?私hoptoadログで
Mysql::Error: Duplicate entry 'XXXX' for key 'YYY'
が表示されます、と私は応じ5K要求/分程度やってサイトに一度、数時間ごとにこのエラーが表示されます。ニューレルに
私はこれらのそれぞれのケースでActiveRecord.find_or_initialize_byを行っています。同じデータの2つの同時投稿を行う現場のクライアントからのものである可能性はありますが、これはモバイルクライアントであり、コードパスは実際にそれに役立ちません(つまり、これはクライアントのクリックではありません送信ボタンを2回すばやく)。
find_or_initialize_byには既知の問題がありますか?私のmysqlインスタンス(Amazon RDS)は、たぶん単に外に出てくる可能性がありますか?(データは返さないのに対して例外は発生すると思いますが)...
また、より良い方法がありますかレコードを挿入する?レコードが存在する場合、私は一般的にupdated_atフィールドのみを更新しています。
ありがとうございます!
情報をいただきありがとうございました....あなたはおそらく正しいでしょう。理論的には、私のDB操作のいずれかに待ち時間があり、ユーザが何とか何らかのアクションを繰り返すと、この動作を引き起こす可能性があります。私はそれを頻繁に見ていない(少なくとも数時間に1回、何千もの要求を処理しているように見える)。私はRails Wartsのブログ記事を読んでいます。私は彼とあなたが提案していることをやっています(DB有効性チェックでそれをバックアップしています)。 – esilver