pymongo.errors.OperationFailure: 错误

5 投票
1 回答
3444 浏览
提问于 2025-04-16 09:22

我启动了三个 mongod 进程,每个进程都在不同的 port(端口)上,并且使用了不同的 dbpath(数据库路径)。

./bin/mongod --replSet foo/tauquir:27018,tauquir:27019 --rest
./bin/mongod --port 27018 --dbpath /data/db1 --replSet foo/tauquir:27017 --rest
./bin/mongod --port 27019 --dbpath /data/db2 --replSet foo/tauquir:27017 --rest

我开始连接时是这样做的:

CONN = Connection("tauquir:27017", slave_okay=True)
CONN.admin.command("replSetInitiate")
CONN = Connection(["tauquir:27018", "tauquir:27019"])

我遇到的错误信息是:

     CONN.admin.command("replSetInitiate")
              File "/usr/local/lib/python2.6/dist-packages/pymongo-1.9-py2.6-linux-
        i686.egg/pymongo/database.py", line 293, in command msg, allowable_errors)
              File "/usr/local/lib/python2.6/dist-packages/pymongo-1.9-py2.6-linux- 
    i686.egg/pymongo/helpers.py", line 119, in _check_command_response raise 
OperationFailure(msg % response["errmsg"])
            pymongo.errors.OperationFailure: command SON([('replSetInitiate', 1)]) failed: 

all members and seeds must be reachable to initiate set

1 个回答

1

replSetInitiate是一个只需要执行一次的命令,所以你可能不想把它写在连接初始化的代码里。不过在执行完这个命令后,你需要用连接信息来创建一个Python客户端,这样才能连接到所有三个mongod服务器。

在你的例子中,你把CONN变量替换成了只连接到27018和27019这两个端口。

db = Connection(["tauquir:27017", "tauquir:27018", "tauquir:27019"])

撰写回答