我正在尝试运行与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
我该如何解决这个问题?
答案 0 :(得分:41)
从
中删除mongod.lock
/var/lib/mongodb
rm mongod.lock
然后重新启动服务应该这样做。例如,在我的Ubuntu安装中,重新启动服务器是这样的:
sudo service mongodb start
答案 1 :(得分:11)
按照给定的顺序尝试按照命令执行:
sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --repair
sudo service mongodb start
sudo service mongodb status
现在你可以看到以下作为最后一个命令的输出:
mongodb start/running, process 2796
答案 2 :(得分:7)
对于在远程服务器而不是本地主机上遇到此问题的任何人,请尝试启用外部接口:
答案 3 :(得分:6)
看起来您可能没有运行MongoDB服务器。经常让我失望的一件事是,如果服务器被不正当地关闭,它将拒绝再次启动,直到你从数据目录中删除mongod.lock文件。
答案 4 :(得分:2)
我建议运行'mongod --repair',而不是删除mongod.lock。 (我认为最好尽可能地从前门进去。而且可能还有其他的东西,AFAIK。)
答案 5 :(得分:2)
如果你发现这个页面是因为你使用了 Docker 并且你遇到了连接问题,
尝试在您的客户端初始化中使用 mongodb 的 docker 容器名称,而不是 localhost:27017
或 0.0.0.0:27017
修复步骤:
docker ps
NAMES
的命令输出的最后一列MongoClient('mongodb://CONTAINER_NAME')
利润。
答案 6 :(得分:0)
尝试以下命令:
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 :(得分:0)
如果您尝试从服务器(而不是本地主机)连接,请尝试检查mongo安装是否已完成: 你应该有: * / var / lib / mongodb文件 * / var / log / mongodb文件 * mongodb.service作为服务(通过启动服务sudo服务mongodb start进行检查)
如果其中任何一个失败,请尝试重新安装mongo(Failed to start mongod.service: Unit mongod.service not found)
这解决了我的问题。 干杯
答案 8 :(得分:0)
对于MongoDb的较新版本(4.x),您可以尝试:
sudo rm /var/lib/mongodb/mongod.lock
sudo systemctl daemon-reload
sudo systemctl start mongod
答案 9 :(得分:0)
首先请确保您已使用sudo apt install mongodb
答案 10 :(得分:0)
以上答案都不适合我,因为我正在使用 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。
答案 11 :(得分:0)
谢谢,但对我来说,我只需要停止 mongod 然后重新启动它,它就可以正常工作而无需删除任何东西。 PS:pymongo 2.7.2