You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails+Sidekiq连接Mongo Atlas集群报错:Host不应包含协议

问题解决步骤

错误原因

这个错误是因为Mongoid配置中错误地将完整的Mongo Atlas SRV连接URL放到了hosts数组字段中,而hosts字段只接受不带协议的主机地址,不能包含mongodb+srv://前缀及后续参数。

修复方案

1. 修正config/mongoid.yml配置

找到你的Mongoid配置文件,将错误的hosts数组配置替换为uri字段直接传入完整连接地址:

错误配置示例:

production:
  clients:
    default:
      hosts:
        - <%= ENV['MONGO_URL'] %>
      database: my_database
      pool: 10

正确配置示例:

production:
  clients:
    default:
      uri: <%= ENV['MONGO_URL'] %>
      pool: 10
      # 无需单独指定database,因为MONGO_URL中已包含数据库名称

2. 检查Sidekiq独立配置(如果有)

如果你的项目有单独的Sidekiq配置文件(比如config/sidekiq.yml),确保其中没有重复设置数据库连接的hosts字段,避免覆盖正确的uri配置。

3. 重启服务

修改配置后,重启Rails应用和Sidekiq进程,确保新配置生效。

额外说明

  • 你提到生产环境正常,大概率是生产环境的Mongoid配置使用了正确的uri写法,而当前环境误用了hosts数组。
  • 增大连接池大小无法解决该问题,因为核心问题是连接地址的配置格式错误,而非连接池资源不足。

内容的提问来源于stack exchange,提问作者anand tripathi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:59:59