0

mongoid と mongo の両方を使用する rails-app があります。私は自分のモデルに mongoid を使用しており、ruote-mon ストレージを備えた ruote があるため、mongo を使用しています。

ただし、本番環境では。私は得る

Mongo::ConnectionFailure: Failed to connect to a master node at localhost:27017

ルートストレージに接続しようとすると。私がちょうどするときでさえMongo::MongoClient.new

これを解決するためにこれまでに行った手順:

  1. master = true設定してmongodbを明示的なマスターにしました/etc/mongod.conf

  2. 介入する可能性のある $ENV 変数セットはありませんMongo::MongoClient.new(二重チェック)

  3. を使用して接続しようとしましたMongo::MongoClient.new(:slave_ok => true)-同じエラー

  4. mongo データベースを数回再起動しました (成功なし)。

  5. ファイアウォールの設定を確認したところ、telnet で localhost:27017 に接続できました (前述のように、mongoid ドキュメントは問題なく取得して保存できます)。

私は頭がおかしいです...何か提案はありますか?

4

2 に答える 2

1

これが発生した理由は、接続中に ismaster コマンドのメタ オペレーター ($query、$orderby など) を使用してクエリを送信していたためです。このコマンドの出力は、プライマリに接続されているかどうかを判断するために使用され、非常に古いバージョンの mongodb はメタ オペレーターの使用をサポートしていないため、失敗します。

この修正は、gem のバージョン 1.8.2 で行われますが、1.8 より前のバージョンの mongodb をまだ実行している場合は、アップグレードすることを強くお勧めします。2.0 は、この投稿の時点で現在のレガシー リリースであり、1.8 でさえ広くサポートされていません。

jmettraux が述べたように、 Ruby-525 の下の MongoDB プロジェクト Jira でこれに関する詳細を見つけることができます

于 2013-01-16T15:03:46.587 に答える
0

ご覧ください: https://jira.mongodb.org/browse/RUBY-525

1.8.2 mongo gem で修正する必要があります。

于 2013-01-16T09:58:32.140 に答える