このエラーは、レプリケーション (オプション) を使用して 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 を実行しています。
(この古い投稿は何らかの形で解決されたと思いますが、ここで同様の問題を抱えていることに気付いたので、将来人々が問題をトラブルシューティングするのに役立つ回答を提供できると思いました.