Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Docker连接到MongoDB云时出错_Python_Mongodb_Docker_Dns - Fatal编程技术网

Python 从Docker连接到MongoDB云时出错

Python 从Docker连接到MongoDB云时出错,python,mongodb,docker,dns,Python,Mongodb,Docker,Dns,我在我的笔记本电脑、服务器和另一台笔记本电脑上测试了该应用程序 我每次都更改了DNS,但这就是我遇到的问题: pymongo.errors.ConfigurationError: None of DNS query names exist: _mongodb._tcp.xxxxxx-shard-00-00-uzn6y.mongodb.net., _mongodb._tcp.xxxxxx-shard-00-00-uzn6y.mongodb.net. 生成此错误的行是: myclient = Mo

我在我的笔记本电脑、服务器和另一台笔记本电脑上测试了该应用程序

我每次都更改了DNS,但这就是我遇到的问题:

pymongo.errors.ConfigurationError: None of DNS query names exist: _mongodb._tcp.xxxxxx-shard-00-00-uzn6y.mongodb.net., _mongodb._tcp.xxxxxx-shard-00-00-uzn6y.mongodb.net.
生成此错误的行是:

myclient = MongoClient(con_string)
结论是:

mongodb+srv://root:<password>@xxxxxx-xxxxxx.mongodb.net/test?retryWrites=true
以上任何一项都无法解析mongocloud实例地址

这是完整的跟踪:

Traceback (most recent call last):
  File "/folder//venv/lib/python3.6/site-packages/pymongo/uri_parser.py", line 287, in _get_dns_srv_hosts
    results = resolver.query('_mongodb._tcp.' + hostname, 'SRV')
  File "/folder//venv/lib/python3.6/site-packages/dns/resolver.py", line 1102, in query
    lifetime)
  File "/folder//venv/lib/python3.6/site-packages/dns/resolver.py", line 1002, in query
    raise NXDOMAIN(qnames=qnames_to_try, responses=nxdomain_responses)
dns.resolver.NXDOMAIN: None of DNS query names exist: _mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net., _mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main.py", line 63, in <module>
    myclient = MongoClient(con_string)
  File "/folder//venv/lib/python3.6/site-packages/pymongo/mongo_client.py", line 494, in __init__
    res = uri_parser.parse_uri(entity, port, warn=True)
  File "/folder//venv/lib/python3.6/site-packages/pymongo/uri_parser.py", line 399, in parse_uri
    nodes = _get_dns_srv_hosts(fqdn)
  File "/folder//venv/lib/python3.6/site-packages/pymongo/uri_parser.py", line 289, in _get_dns_srv_hosts
    raise ConfigurationError(str(exc))
pymongo.errors.ConfigurationError: None of DNS query names exist: _mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net., _mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net.
回溯(最近一次呼叫最后一次):
文件“//folder//venv/lib/python3.6/site packages/pymongo/uri\u parser.py”,第287行,位于“get\U dns\U srv\U主机”中
结果=解析器.query(“”“mongodb.\U tcp.”+主机名,“SRV”)
文件“/文件夹//venv/lib/python3.6/site packages/dns/resolver.py”,第1102行,在查询中
寿命)
文件“/文件夹//venv/lib/python3.6/site packages/dns/resolver.py”,第1002行,在查询中
提升NXDOMAIN(qnames=qnames\u to\u try,responses=NXDOMAIN\u responses)
dns.resolver.NXDOMAIN:不存在任何dns查询名称:_mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net.,_mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net。
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“main.py”,第63行,在
myclient=MongoClient(con_字符串)
文件“/文件夹//venv/lib/python3.6/site packages/pymongo/mongo_client.py”,第494行,在__
res=uri\u parser.parse\u uri(实体、端口、警告=True)
parse_uri中的文件“/文件夹//venv/lib/python3.6/site packages/pymongo/uri_parser.py”,第399行
节点=\u获取\u dns\u srv\u主机(fqdn)
文件“//folder//venv/lib/python3.6/site packages/pymongo/uri\u parser.py”,第289行,位于“get\U dns\U srv\U主机”中
raise配置错误(str(exc))
pymongo.errors.ConfigurationError:不存在任何DNS查询名称:_mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net.,_mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net。
我找到了解决方案。 连接主机字符串应为::

xxxxxxxxxx-shard-00-00-xxxxxxxxxxxx.mongodb.net:27017,xxxxxxxx-shard-00-01-xxxxxxxx.mongodb.net:27017,xxxxxxxxx-shard-00-02-xxxxxxxxx.mongodb.net:27017/test?ssl=true&replicaSet=xxxxxxxxxxxxxxx-shard-0&authSource=admin&retryWrites=true 

\u mongodb.\u tcp
部分看起来不正确。域名应以群集名称开头。您使用的是哪个版本的驱动程序?如果您使用的是MongoDB云,那么:连接->连接您的应用程序->选择python驱动程序3.4。或者稍后,您可以将此格式的工作连接字符串复制到数据库中
Traceback (most recent call last):
  File "/folder//venv/lib/python3.6/site-packages/pymongo/uri_parser.py", line 287, in _get_dns_srv_hosts
    results = resolver.query('_mongodb._tcp.' + hostname, 'SRV')
  File "/folder//venv/lib/python3.6/site-packages/dns/resolver.py", line 1102, in query
    lifetime)
  File "/folder//venv/lib/python3.6/site-packages/dns/resolver.py", line 1002, in query
    raise NXDOMAIN(qnames=qnames_to_try, responses=nxdomain_responses)
dns.resolver.NXDOMAIN: None of DNS query names exist: _mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net., _mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main.py", line 63, in <module>
    myclient = MongoClient(con_string)
  File "/folder//venv/lib/python3.6/site-packages/pymongo/mongo_client.py", line 494, in __init__
    res = uri_parser.parse_uri(entity, port, warn=True)
  File "/folder//venv/lib/python3.6/site-packages/pymongo/uri_parser.py", line 399, in parse_uri
    nodes = _get_dns_srv_hosts(fqdn)
  File "/folder//venv/lib/python3.6/site-packages/pymongo/uri_parser.py", line 289, in _get_dns_srv_hosts
    raise ConfigurationError(str(exc))
pymongo.errors.ConfigurationError: None of DNS query names exist: _mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net., _mongodb._tcp.xxxxxx-shard-00-00-xxxxxx.mongodb.net.
xxxxxxxxxx-shard-00-00-xxxxxxxxxxxx.mongodb.net:27017,xxxxxxxx-shard-00-01-xxxxxxxx.mongodb.net:27017,xxxxxxxxx-shard-00-02-xxxxxxxxx.mongodb.net:27017/test?ssl=true&replicaSet=xxxxxxxxxxxxxxx-shard-0&authSource=admin&retryWrites=true