0

このエラーが発生しており、解決策が見つかりません。

PHPとともにmongoDBをUbuntuサーバーにインストールしましたが、インストールは正常に機能しており、ターミナル(パテを使用したSSH)を介して問題なくmongoにアクセスできますが、PHPアプリケーションを介してアクセスしようとすると、接続が受け入れられたとログに示されていても、「候補サーバーが見つかりません」と表示されます。

bind_ip をサーバー IP、127.0.0.1、localhost に設定しようとしましたが、何も機能しません。

追加情報: - スタンドアロン モードで実行しています。- mongod で mongo を起動 --fork --auth --port 27017 --logpath /var/log/mongodb/server1.log --logappend --dbpath /var/lib/mongodb/data/db/

誰にもアイデアはありますか?

ありがとう。

4

1 に答える 1

0

このエラーは、レプリケーション (オプション) を使用して MongoDB を実行しているときに発生するようreplSetで、何らかの理由で使用できるプライマリ サーバーがありません。

たとえば、プライマリを再起動した後、新しいプライマリの選択に時間がかかり、セカンダリしか利用できないようです。

ただし、レプリケーションを使用して実行していないが、「スタンドアロン」モードにあるとおっしゃいました...その場合、私が見た他の質問は、最新のMongoDBおよびPHPドライバーバージョン(Ubuntu 10genから)を実行していることを確認することを示唆していますapt-get ソース)。また、ファイアウォールの問題がある場合に備えて、PHPがオンになっている同じサーバーから mongo にアクセスできることを再確認してください。mongo mongohost1.server.com:27107 -uUSERNAME -pPASSWORD

MongoClient()PHP ドライバーに渡す接続文字列を確認すると便利です。レプリケーションを使用していない場合は、次のようになります。

mongodb://USERNAME:PASSWORD@localhost:27017

レプリケーションを使用している場合は、次のようになります。

mongodb://USERNAME:PASSWORD@host1.server.com:27017,host2.server.com:27017,host3.server.com:27017/?replicaSet=my_replica_set

レプリケーションを使用している場合は、プライマリ Mongodb サーバーをサーバーの 1 つとして指定していることを確認してください (ドライバーは、どれがプライマリであるかを検出し、プライマリが変更されたかどうかを検出する必要があります)。

それがすべて正しく設定されている場合は、実際にプライマリがあることを再確認してください。何か問題があり、MongoDB がプライマリを選択しない可能性があります。Mongo コマンドライン/コンソール アプリにログインしてこれを実行すると、すべてのレプリカ セット メンバーのステータスを確認できます。

rs.status()

PHP 5.3、MongoDB 2.4.8、MongoDB PHP Driver 1.4.5、Ubuntu 12.04 を実行しています。

(この古い投稿は何らかの形で解決されたと思いますが、ここで同様の問題を抱えていることに気付いたので、将来人々が問題をトラブルシューティングするのに役立つ回答を提供できると思いました.

于 2014-01-24T23:09:45.350 に答える