Python连接本地MongoDB失败但云连接正常,是什么原因?
可能的故障原因及排查方法如下:
本地MongoDB服务未正常运行或端口监听异常
请先确认本地MongoDB进程已启动,且27017端口正常监听。可执行命令验证:
Linux/macOS:ss -tulnp | grep 27017
Windows(命令提示符):netstat -ano | findstr "27017"
如果没有对应mongod进程的监听记录,先启动本地MongoDB服务再重试。账号认证配置错误
本地部署的MongoDB默认会将管理员账号创建在admin库下,你当前的连接串未指定authSource参数,会默认使用你填写的业务库MYDB作为认证源,导致认证失败。可修改连接串添加认证源参数:mongo_url = "mongodb://admin:mypassword@localhost:27017/MYDB?retryWrites=true&w=majority&authSource=admin"同时确认本地MongoDB的
admin账号密码和你填写的云Mongo密码一致,若本地密码不同请修改为对应密码。本地数据库/集合无对应数据
云Mongo的MYDB.historical_prices集合的数据不会自动同步到本地,你需要先确认本地实例中存在MYDB库、historical_prices集合,且集合中存在ticker字段。可以直接在本地Mongo Shell中执行查询验证:use MYDB db.historical_prices.find({},{"ticker":1})如果查询无结果,说明本地没有对应数据,需要同步数据后再测试。
本地MongoDB启用了强制SSL连接
如果你本地MongoDB配置了强制SSL访问,需要在连接串中添加ssl=true参数,否则会连接失败。代码未捕获具体错误导致无法定位问题
你当前的异常捕获逻辑只打印了自定义提示,没有输出具体异常信息,建议修改except代码块打印具体错误:except Exception as e: print(f"Error: could not retrieve from Mongo, 具体原因:{e}") return ""输出具体错误后可快速定位是连接超时、认证失败还是无对应字段的问题。
内容的提问来源于stack exchange,提问作者erixliechtenstein

