Mongo vs Mongoid - 为什么1连接而另一个不连接?

时间:2013-01-16 08:46:00

标签: mongodb mongoid

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

然而在生产中;我得到了

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

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

到目前为止,我已尝试采取措施解决此问题:

  1. 我通过在master = true

  2. 中设置/etc/mongod.conf,使我的mongodb成为明确的主人
  3. 没有设置$ ENV变量可以干预Mongo::MongoClient.new(双重检查)

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

  5. 我已多次重启我的mongo数据库(没有成功)。

  6. 我已经检查了我的防火墙设置,我可以使用telnet连接到localhost:27017(如上所述,可以提取和存储mongoid文档)

  7. 我失去了智慧......有什么建议吗?

2 个答案:

答案 0 :(得分:1)

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

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

正如jmettraux所提到的,您可以在Ruby-525

下的MongoDB项目Jira上找到有关此内容的更多详细信息

答案 1 :(得分:0)

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

应该由1.8.2 mongo gem修复。