pymongo.errors.ServerSelectionTimeoutError:localhost:27017:[WinError 10061]无法建立连接,因为目标机器主动拒绝

问题描述 投票:0回答:6

我正在学习 W3Schools 的 Python 教程。我刚刚开始学习 MongoDB 章节。我安装了 MongoDB 并检查了它:

import pymongo

没有出现错误。

但是一旦我输入以下代码:

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
mydict = { "name": "John", "address": "Highway 37" }

x = mycol.insert_one(mydict)

print(x.inserted_id)

我在 cmd 底部收到这些消息和错误消息:

cd C:\Users\xxx\myname
python index.py

输出:

Traceback (most recent call last):
  File "index.py", line 8, in <module>
    x = mycol.insert_one(mydict)
  File "C:\Users\path...\pymongo\collection.py", line 695, in insert_one
    self._insert(document,
  File "C:\Users\path...\pymongo\collection.py", line 610, in _insert
    return self._insert_one(
  File "C:\Users\path...\pymongo\collection.py", line 599, in _insert_one
    self.__database.client._retryable_write(
  File "C:\Users\path...\pymongo\mongo_client.py", line 1490, in _retryable_write
    with self._tmp_session(session) as s:
  File "C:\Program Files\WindowsApps\path...\lib\contextlib.py", line 113, in __enter__
    return next(self.gen)
  File "C:\Users\path...\pymongo\mongo_client.py", line 1823, in _tmp_session
    s = self._ensure_session(session)
  File "C:\Users\path...\pymongo\mongo_client.py", line 1810, in _ensure_session
    return self.__start_session(True, causal_consistency=False)
  File "C:\Users\path...\pymongo\mongo_client.py", line 1763, in __start_session
    server_session = self._get_server_session()
  File "C:\Users\path...\pymongo\mongo_client.py", line 1796, in _get_server_session
    return self._topology.get_server_session()
  File "C:\Users\path...\pymongo\topology.py", line 482, in get_server_session
    self._select_servers_loop(
  File "C:\Users\path...\pymongo\topology.py", line 208, in _select_servers_loop
    raise ServerSelectionTimeoutError(
pymongo.errors.ServerSelectionTimeoutError: localhost: 27017: [WinError 10061] Could not connect because target computer actively refused connection

我也尝试过暂时禁用防火墙,但错误不断出现。

我用过:

"python 3.8.2
, mongoDB 4.2.5.0
, pymongo 3.10.1
, windows 10 home"

出了什么问题?

python database mongodb runtime-error pymongo
6个回答
11
投票

你的代码没有任何问题。

如果您禁用了防火墙,最可能的原因是 MongoDB 服务未安装或运行。在 Windows 上,按 Windows 键并输入 services 打开服务应用程序。检查服务 MongoDB Server 已列出并且具有 Running 状态。

您可以通过打开您喜欢的 Windows 终端或 PowerShell 并输入

mongo
来测试本地连接。如果它有效,你应该看到:

PS> mongo
MongoDB shell version v4.2.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1b5499b8-166a-4de6-a8c9-643499f04e66") }
MongoDB server version: 4.2.3

1
投票

尝试在 CLI 中运行此命令:

mongod

如果您看到任何错误,请观看 视频如何在 Windows 10 上安装 MongoDB。这个视频很有帮助。


0
投票

我试图从 Django 进行连接。我使用的是 Python 3.7,之前尝试过为 Python 3.6+ 提供的 URI 字符串,但它在 PyCharmJupyter 中不起作用。但后来我选择了 Python 版本 3.4+ 的 URI 字符串,它在 Jupyter Notebook 中工作,但我在从 Django 项目连接时遇到了问题。

为了解决这个问题,我从 https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.11-signed.msi 安装了 MongoDB 应用程序,它在我的计算机上启动了 MongoDB 服务。并且无需更改任何以前的代码,我就可以连接。下面是我从 Django 应用程序连接到 MongoDB 的代码:

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': <DBname>,
        'HOST': "mongodb://<username>:<password>@cluster0-shard-00-00.pifkd.mongodb.net:27017,cluster0-shard-00-01.pifkd.mongodb.net:27017,cluster0-shard-00-02.pifkd.mongodb.net:27017/<DBname>?ssl=true&replicaSet=atlas-79xyw7-shard-0&authSource=admin&retryWrites=true&w=majority",
        'USER': <username>,
        'PASSWORD': <password>,
    }
}

0
投票

就我而言,我输入了错误的端口

client = pymongo.MongoClient('mongodb://localhost:27017/')

您可以通过任务管理器性能打开资源监视器网络监听端口

检查MongoDB服务器正在监听哪个端口(在Windows中)

并搜索 mongod.exe


0
投票

您的设备可能已禁用 MongoDB 服务。

在搜索栏中搜索services,然后在列表中找到 MongoDB 服务。首先右键,然后单击属性,然后从禁用更改为自动或从手动更改为自动

如果您想保留它手动,请右键单击列表中的 MongoDB 服务选项后单击“开始”。


0
投票

我通过卸载防病毒软件解决了这个问题。现在我害怕浏览网络,但我会小心,直到六月课程结束。与此同时,我的防病毒软件阻止了与 MongoDB 的任何通信。现在我可以通过 Jupyter Notebook 导入它并且工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.