1

別のマシンにあるレプリカセットへの書き込み/アップサートに問題があります。実行されるコードは次のとおりです。

<?php
//Create a connection
$connection = new Mongo("mongodb://user:password@mycompany.com:27017/dbName", array("persist" => "pcName", "replicaSet"=>"myReplSet"));

//Select a database
$db = $connection->dbName;

//Select a collection
$collection = $db->testCollection;

//Add a record
$obj = array("FirstName" => "Brian", "LastName"=>"Renze", "Email"=>"abc@me.com");
$collection->insert($obj);
?>

エラーが表示されます: Fatal error: Uncaught exception 'MongoCursorException' with message 'bad or malformed command request?' 次の例外「MongoCursorException」が続き、 「マスターを特定できませんでした」というメッセージが表示されます

データベースには何も書き込まれていませんが、使用しているコードの何が問題なのかわかりません。これは、php.net の php-mongo チュートリアルからのほぼ正確なコピーです。

私たちの mongoDB インスタンスは、データベース (この場合は dbName) に直接接続している場合にのみ使用できますが、「データベースを選択する」手順を実行する必要がありますか?

replicaSet のマスター インスタンスを見つけるにはどうすればよいですか? それは自動的に起こるべきではありませんか?

助言がありますか?

ありがとう、ブライアン・レンゼンブリンク

4

1 に答える 1

0

1 つのセットアップなしでレプリカ セットを使用しようとしていると思います。

パラメータを削除した場合replicaSet:

$connection = new Mongo("mongodb://user:password@mycompany.com:27017/dbName", array("persist" => "pcName"));

それはうまくいくはずです。

うまくいかない場合は、mongo、php、mongo-php のバージョン、およびオペレーティング システムのバージョンを含めていただけますか?

レプリケーションの詳細については、http ://www.mongodb.org/display/DOCS/Replication を参照してください。

接続について詳しくは、http ://www.php.net/manual/en/mongo.connecting.php をご覧ください。

于 2012-07-06T16:53:56.280 に答える