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:27017
或 0.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 一直拒绝连接的主要内容,如果未能解决你的问题,请参考以下文章
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