【问题标题】:Mongo vs Mongoid - why can 1 connect and the other not?Mongo vs Mongoid - 为什么一个可以连接而另一个不能?
【发布时间】:2013-01-16 08:45:59
【问题描述】:

我有一个使用 mongoid 和 mongo 的 rails-app。我将 mongoid 用于我自己的模型,我使用 mongo 是因为我有 ruote 和 ruote-mon 存储。

但是在生产中;我明白了

Mongo::ConnectionFailure: Failed to connect to a master node at localhost:27017

当我尝试连接到 ruote 存储时。即使我只是做Mongo::MongoClient.new

到目前为止我为解决这个问题所采取的步骤:

  1. 我通过在/etc/mongod.conf 中设置master = true 使我的mongodb 成为一个明确的主控

  2. 没有 $ENV 变量集可以干预Mongo::MongoClient.new(仔细检查)

  3. 我尝试使用Mongo::MongoClient.new(:slave_ok => true) 进行连接 - 同样的错误

  4. 我已多次重启我的 mongo 数据库(均未成功)。

  5. 我已经检查了我的防火墙设置,我可以使用 telnet 连接到 localhost:27017(如上所述,可以获取和存储 mongoid 文档而不会出现问题)

我疯了...有什么建议吗?

【问题讨论】:

    标签: mongodb mongoid


    【解决方案1】:

    发生这种情况的原因是因为我们在连接期间使用元运算符($query、$orderby 等)发送了 ismaster 命令的查询。此命令的输出用于确定您是否连接到主节点并且会失败,因为非常旧的 mongodb 版本不支持使用元运算符。

    此修复将在 gem 的 1.8.2 版本中进行,但我强烈建议仍在运行 mongodb 1.8 之前版本的任何人进行升级。截至本文发布时,2.0 是当前的旧版本,甚至不再广泛支持 1.8。

    正如 jmettraux 所提到的,您可以在 Ruby-525 下的 MongoDB 项目 Jira 上找到更多详细信息

    【讨论】:

      【解决方案2】:

      请看:https://jira.mongodb.org/browse/RUBY-525

      应该由 1.8.2 的 mongo gem 修复。

      【讨论】:

      • 不是完整的/最终的答案,但非常感谢这张漂亮票中的指针。
      • 您的报告中没有足够的信息来给您一个最终答案;-) 您尤其没有详细说明开发环境和生产环境之间的差异,并且您没有提供有关版本的任何详细信息( gem / mongod / ruby​​ / oses)你使用。立即提供这些信息可以节省时间(您的时间,帮助的人的时间)。
      猜你喜欢
      • 1970-01-01
      • 2018-12-01
      • 2019-09-07
      • 1970-01-01
      • 2021-04-03
      • 2013-08-05
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      相关资源
      最近更新 更多