2016-05-26 19 views
1

Ich versuche, eine Verbindung zu einem Replikat-Set von PHP mit MongoDB-Client (1.6.11), für beide Server-Versionen 3.0.7 und 2.6.6.PHP MongoDB WriteConcernException mit Replikat-Set

jedoch bei der Ausführung einer ‚speichern()‘ und gelegentlich die Speichern gegen eine der „sekundären“ Server ausgeführt wird, und eine Ausnahme ausgelöst wird:

PHP Warning: abgefangene Ausnahme ‚MongoWriteConcernException‘ mit der Meldung '127.0.0.3:27017: nicht beherrschen'

Die Befehle verwendet, um dieses zu replizieren sind:

$options = [ 
'db' => 'admin', 
'username' => '**********', 
'password' => '**********', 
'socketTimeoutMS' => 5000, 
'connectTimeoutMS' => 100, 
]; 

$mongo = new MongoClient('mongodb://127.0.0.1,127.0.0.2,127.0.0.3', $options); 
$collection = $mongo->selectDB('test')->selectCollection('test'); 
for ($i=0; $i<10; $i++) { 
    $collection->save(['a' => uniqid()], ['w' => 3]); 
} 

Und der rs.status() gibt zurück:

{ 
"set" : "devSet", 
"date" : ISODate("2016-05-26T22:02:16.564Z"), 
"myState" : 1, 
"members" : [ 
    { 
     "_id" : 0, 
     "name" : "127.0.0.1:27017", 
     "health" : 1, 
     "state" : 1, 
     "stateStr" : "PRIMARY", 
     "uptime" : 166106, 
     "optime" : Timestamp(1464298125, 1), 
     "optimeDate" : ISODate("2016-05-26T21:28:45Z"), 
     "electionTime" : Timestamp(1464134229, 1), 
     "electionDate" : ISODate("2016-05-24T23:57:09Z"), 
     "configVersion" : 3, 
     "self" : true 
    }, 
    { 
     "_id" : 1, 
     "name" : "127.0.0.2:27017", 
     "health" : 1, 
     "state" : 2, 
     "stateStr" : "SECONDARY", 
     "uptime" : 3616, 
     "optime" : Timestamp(1464298125, 1), 
     "optimeDate" : ISODate("2016-05-26T21:28:45Z"), 
     "lastHeartbeat" : ISODate("2016-05-26T22:02:16.461Z"), 
     "lastHeartbeatRecv" : ISODate("2016-05-26T22:02:15.853Z"), 
     "pingMs" : 0, 
     "syncingTo" : "127.0.0.3:27017", 
     "configVersion" : 3 
    }, 
    { 
     "_id" : 2, 
     "name" : "127.0.0.3:27017", 
     "health" : 1, 
     "state" : 2, 
     "stateStr" : "SECONDARY", 
     "uptime" : 166105, 
     "optime" : Timestamp(1464298125, 1), 
     "optimeDate" : ISODate("2016-05-26T21:28:45Z"), 
     "lastHeartbeat" : ISODate("2016-05-26T22:02:14.959Z"), 
     "lastHeartbeatRecv" : ISODate("2016-05-26T22:02:14.958Z"), 
     "pingMs" : 0, 
     "syncingTo" : "127.0.0.1:27017", 
     "configVersion" : 3 
    } 
], 
"ok" : 1 
} 

Was fehlt mir?

Antwort

1

Ich habe meinen Fehler gefunden: Irgendwo entlang der Linie, habe ich ["replySet" => "devSet"] ​​aus dem Optionen-Array entfernt.