0

我有一个使用 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. 我通过设置使我的 mongodb 成为一个明确的master = true主人/etc/mongod.conf

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

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

  4. 我已经多次重新启动了我的 mongo 数据库(没有成功)。

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

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

4

2 回答 2

1

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

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

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

于 2013-01-16T15:03:46.587 回答
0

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

应该由 1.8.2 mongo gem 修复。

于 2013-01-16T09:58:32.140 回答