Pymongo 在 27017 一直拒绝连接

Posted

技术标签:

【中文标题】Pymongo 在 27017 一直拒绝连接【英文标题】:Pymongo keeps refusing the connection at 27017 【发布时间】:2011-12-06 08:19:18 【问题描述】:

我正在尝试运行与 pymongo 的简单连接,但它不断返回连接被拒绝

这是我尝试过的:

>>>from pymongo import Connection
>>>connection = Connection('localhost',27017)

这就是我得到的

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pymongo-2.0.1_-py2.7-linux i686.egg/pymongo/connection.py", line 348, in __init__
 self.__find_node()
File "/usr/local/lib/python2.7/dist-packages/pymongo-2.0.1_-py2.7-linux- i686.egg/pymongo/connection.py", line 627, in __find_node
  raise AutoReconnect(', '.join(errors))
pymongo.errors.AutoReconnect: could not connect to localhost:27017: [Errno 111]     Connection refused

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

删除/var/lib/mongodb内部的mongod.lock

sudo rm /var/lib/mongodb/mongod.lock

然后重启服务就可以了。例如,在我的 Ubuntu 安装中,重启服务器是这样的:

sudo service mongodb start

【讨论】:

应该是sudo service mongodb start 而不是sudo service mongod start 路径应该是/var/lib/mongodb C:\Program Files\MongoDB\Server\4.0\data 在 Windows 谢谢! @jfleach 这实际上取决于您是使用 Ubuntu (mongodb) 上的默认包还是官方 mongodb 包。在后一种情况下,mongod 而不是 mongodb 是服务(守护进程)名称。 对我来说 sudo service mongod start 有效,而不是 sudo service mongodb start【参考方案2】:

只需按给定顺序尝试以下命令:

sudo rm /var/lib/mongodb/mongod.lock

sudo mongod --repair

sudo service mongodb start

sudo service mongodb status

就是这样,您现在可以看到以下命令的输出:

mongodb start/running, process 2796

【讨论】:

【参考方案3】:

对于在远程服务器而不是本地主机上遇到此问题的任何人,请尝试启用外部接口:

转到配置文件(例如 /etc/mongodb.conf) 找到 bind_ip=127.0.0.1 在前面用 # 注释掉该行 重启mongod

【讨论】:

【参考方案4】:

如果您因为使用 Docker 而发现此页面并且遇到连接问题, 尝试在您的客户端初始化中使用 mongodb 的 docker 容器名称,而不是 localhost:270170.0.0.0:27017

修复步骤:

    在控制台中写入docker ps 找到容器的名称(它位于命令输出的最后一列中,名为NAMES MongoClient('mongodb://CONTAINER_NAME')

利润。

【讨论】:

【参考方案5】:

看起来您可能没有运行 MongoDB 服务器。经常让我感到困扰的一件事是,如果服务器被不干净地关闭,它将拒绝再次启动,直到您从数据目录中删除 mongod.lock 文件。

【讨论】:

【参考方案6】:

尝试以下命令:

sudo service mongod start
sudo service mongod status

db.py

import pymongo
from pymongo import MongoClient
#mongo client is connected
client = MongoClient()
db     = client['db']

【讨论】:

【参考方案7】:

我建议不要删除 mongod.lock,而是运行“mongod --repair”。 (我认为最好尽可能从前门进入。AFAIK 可能还有其他问题。)

【讨论】:

很公平。虽然我不记得尺寸是这里的一个因素。我的回答肯定对使用较小数据集的人有效。【参考方案8】:

如果您尝试从服务器(不是本地主机)连接,请尝试检查您的 mongo 安装是否完成: 你应该有: * /var/lib/mongodb 文件 * /var/log/mongodb 文件 * mongodb.service 作为服务(通过启动服务 sudo service mongodb start 进行检查)

如果其中任何一个失败,请尝试重新安装 mongo (Failed to start mongod.service: Unit mongod.service not found)

这解决了我的问题。 干杯

【讨论】:

【参考方案9】:

以上答案都不适合我,因为我正在使用 docker-compose 所以这对我有用:

docker run --rm --volumes-from my-mongo-server mongo unlink "/data/db/mongod.lock"
docker run --rm --volumes-from my-mongo-server mongo --repair

my-mongo-server 替换为您的容器名称/ID。

【讨论】:

【参考方案10】:

对于较新版本(4.x)的MongoDb,您可以尝试:

sudo rm /var/lib/mongodb/mongod.lock

sudo systemctl daemon-reload

sudo systemctl start mongod

【讨论】:

【参考方案11】:

首先确保你已经使用sudo apt install mongodb安装了mongodb

【讨论】:

【参考方案12】:

谢谢,但对我来说,我只需要停止 mongod 然后重新启动它,它就可以正常工作而无需删除任何东西。 PS:pymongo 2.7.2

【讨论】:

以上是关于Pymongo 在 27017 一直拒绝连接的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB pymongo模块

pymongo.errors.ConfigurationError: Server at 10.2.6.31:27017 reports wire version 5, but this versio

ServerSelectionTimeoutError(pymongo.errors.ServerSelectionTimeoutError:147.234.32.246:27017

python 包之 mongodb 数据库操作教程

如何用pymongo连接远程mongodb

pymongo方法详解