【问题标题】:PHP MongoDB WriteConcernException with replica set带有副本集的 PHP MongoDB WriteConcernException
【发布时间】:2016-05-26 22:03:53
【问题描述】:

我正在尝试使用 MongoDB 客户端 (1.6.11) 从 PHP 连接到副本集,同时针对服务器版本 3.0.7 和 2.6.6。

但是,在执行“save()”时,有时会针对“辅助”服务器之一执行保存,并引发异常:

PHP 警告:未捕获的异常“MongoWriteConcernException” 带有消息'127.0.0.3:27017: not master'

用来复制这个的命令是:

$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]);
}

然后 rs.status() 返回:

{
"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
}

我错过了什么?

【问题讨论】:

    标签: php mongodb replicaset


    【解决方案1】:

    我发现了我的错误:在某个地方,我从选项数组中删除了 ["replicaSet" => "devSet"]。

    【讨论】:

      猜你喜欢
      • 2020-03-14
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多