0

挿入クエリで非常に奇妙な問題に直面しています。ローカル mongodb では問題なく動作していますが、MongoHQ では問題が発生しています。

Rails、Mongo Id query、MongoHq の挿入クエリでデータが少し長い場合は true を返しますが、実際にはデータが挿入されず、次のクエリは次の場合にログに記録されます。

失敗例:

Dev-Stats['gm_metrics'].insert([
    {"_id"=>BSON::ObjectId('50c01eccb4e36b0002000003'), "metric_name"=>2, "count"=>1, "parameters"=>[{"param"=>"user_id",  "value"=>"4f0be09cc8c1950001000001"}, {"param"=>"created_at", "value"=>"2012-12-06 04:27:56 +0000"}, {"param"=>"game_id", "value"=>"4e8d712aa510cb0001000002"}],  "updated_at"=>2012-12-06 04:27:56 UTC, "created_at"=>2012-12-06 04:27:56 UTC}
])

上記のmongodbクエリが生成されるRailsクエリ

GmMetric.with(:safe=>false).create({:metric_name=>2, :count=>1,:parameters => [{"param"=>"user_id", "value"=>"4f0be09cc8c1950001000001"},{"param"=>"created_at", :value=>"#{Time.now}"},{"param"=>"game_id", :value1=>"4e8d712aa510cb0001000002"}]})

Dev-Stats['gm_metrics'].insert([{"_id"=>BSON::ObjectId('50c01eccb4e36b0002000003'), "metric_name"=>2, "count"=>1, "parameters"=>[{"param"=>"user_id", "value"=>"123456"}, {"param"=>"created_at", "value"=>"2012-12-06 04:27:56 +0000"}, {"param"=>"game_id", "value"=>"123456"},{"param"=>"game_id", "value"=>"123456"}], "updated_at"=>2012-12-06 04:28:56 UTC, "created_at"=>2012-12-06 04:28:56 UTC}])

成功事例

Dev-Stats['gm_metrics'].insert([{"_id"=>BSON::ObjectId('50c01eccb4e36b0002000003'), "metric_name"=>2, "count"=>1, "parameters"=>[{"param"=>"user_id", "value"=>"4f0be09cc8c1950001000001"}, {"param"=>"created_at", "value"=>"2012-12-06 04:27:56 +0000"}, {"param"=>"game_id", "value"=>"123456"}], "updated_at"=>2012-12-06 04:28:56 UTC, "created_at"=>2012-12-06 04:28:56 UTC}])

Dev-Stats['gm_metrics'].insert([{"_id"=>BSON::ObjectId('50c01eccb4e36b0002000003'), "metric_name"=>2, "count"=>1, "parameters"=>[{"param"=>"user_id", "value"=>"4f0be09cc8c1950001000001"}, {"param"=>"created_at", "value"=>"4f0be09cc8c1950001000001"}], "updated_at"=>2012-12-06 04:28:56 UTC, "created_at"=>2012-12-06 04:28:56 UTC}])

上記の場合、クエリの長​​さが長い場合はデータベースに挿入されないことが確認されていますが、より少ないパラメーターと短い値で挿入しようとすると、常に成功します。修正方法を教えてください。

4

1 に答える 1

0

safe:true オプション (Ruby にはあまり詳しくありませんが、十分な洞察が得られます) を挿入してみてください。

于 2012-12-10T13:06:34.087 に答える