Archery icon indicating copy to clipboard operation
Archery copied to clipboard

archery从1.10.0升级到1.11.3版本后,无法连接mongo

Open chown1987 opened this issue 1 year ago • 8 comments

重现步骤

1、把archery升级到1.11.3 2、登录archery,在实例列表中随便测试mongo的连接,报连接失败 3、联系mongo的云厂商,确认mongo 4.2版本不支持SCRAM-SHA-256的连接方式

预期外的结果

1、通过查看,发现1.11.3版本中,pymongo的版本是4.x,无法支持mongo的SCRAM-SHA-1连接方式 2、能否在新版本中修复该bug,把pymongo兼容SCRAM-SHA-1和SCRAM-SHA-256的连接方式

日志文本

No response

版本

1.11.3

部署方式

Docker

是否还有其他可以辅助定位问题的信息?比如数据库版本等

No response

chown1987 avatar Nov 15 '24 02:11 chown1987

替换Archery-master\sql\engines目录下的mongo.py和tests.py解决了 tests.txt mongo.txt 是的,这个错误是因为 PyMongo 4.x 版本移除了 authenticate() 方法。在 PyMongo 4.x 中,认证需要在创建连接时通过 MongoClient 的参数来完成。让我们修改代码来支持新版本的认证方式。主要修改: 移除了旧的 authenticate() 方法调用 将认证信息直接通过 MongoClient 的参数传入: username/password: 用户名和密码 authSource: 认证数据库,默认使用 admin authMechanism: 显式指定使用 SCRAM-SHA-1 认证机制 添加了连接超时参数 serverSelectionTimeoutMS 通过调用 server_info() 来测试连接是否成功 优化了错误处理,在连接失败时会关闭连接并抛出异常 这样修改后应该可以支持 PyMongo 4.x 版本的认证连接。同时也保持了向后兼容性,因为这些参数在旧版本中也是支持的。 如果你的 MongoDB 服务器使用其他认证机制(如 SCRAM-SHA-256),可以相应修改 authMechanism 参数。

weiyehan avatar Dec 26 '24 03:12 weiyehan

用cursor写的

weiyehan avatar Dec 26 '24 03:12 weiyehan

啥时候修复,同样的问题

Hewei6765 avatar Feb 07 '25 10:02 Hewei6765

啥时候修复呀

kinsey-jian avatar Mar 24 '25 06:03 kinsey-jian

替换mongo.py.txt

进入archery容器替换/opt/archery/sql/engines/mongo.py文件

mykernel avatar Mar 31 '25 03:03 mykernel

替换后不报错了 但执行mongo SQL 无法写入数据

619733575 avatar Mar 31 '25 06:03 619733575

替换后不报错了 但执行mongo SQL 无法写入数据

我也是这个问题,抓包发现,立即执行的时候,并没有向 mongo server 发起任何请求。 查询功能都没有问题。

likeh2o avatar Apr 09 '25 03:04 likeh2o