Python 从Docker连接到MongoDB云时出错
我在我的笔记本电脑、服务器和另一台笔记本电脑上测试了该应用程序 我每次都更改了DNS,但这就是我遇到的问题: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
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