首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到mongoDB on mongoHQ失败

连接到mongoDB on mongoHQ失败
EN

Stack Overflow用户
提问于 2010-09-12 02:18:41
回答 2查看 3.4K关注 0票数 5

这只是我的周末项目/学习,我是非常新的西纳屈和MongoDB。

我已经为mongoDB安装了宝石,例如: mongo、mongo_mapper和mongoid。

当我尝试从localhost连接到MongoHQ上的数据库时,它遇到了这样一个错误:

代码语言:javascript
复制
Mongo::ConnectionFailure at /
failed to connect to any given host:port

    * file: connection.rb
    * location: connect
    * line: 489

我找到了一条类似的线,但坦白地说,我不太明白答案.

下面是我的代码片段:

代码语言:javascript
复制
require 'rubygems'
require 'sinatra'
require 'mongo'
require 'mongo_mapper'

get '/' do
  MongoMapper.connection = Mongo::Connection.new('flame.mongohq.com', 27044)
  MongoMapper.database = 'notes'
  MongoMapper.database.authenticate('foo', 'bar')
  erb :list
end

我从这里获得了上面的代码,但它似乎不起作用.

哪一部分是错的?还有别的办法吗?最后,这个测试web应用程序将部署到heroku上,因此我希望该解决方案能够与本地主机和我的heroku服务器一起工作。

更新:

代码语言:javascript
复制
I just created a minimal code snippet to test the mongodb connection:
require 'rubygems'
require 'mongo'

db = Mongo::Connection.new("flame.mongohq.com", 27044).db("notes")

但是在超时之后,仍然得到了错误:

代码语言:javascript
复制
$ ruby mongodbtest.rb 
/Library/Ruby/Gems/1.8/gems/mongo-1.0.8/lib/../lib/mongo/connection.rb:489:in
`connect': failed to connect to any given host:port (Mongo::ConnectionFailure)
from /Library/Ruby/Gems/1.8/gems/mongo-1.0.8/lib/../lib/mongo/connection.rb:137:in
`initialize'
from mongodbtest.rb:4:in `new'
from mongodbtest.rb:4

主机名和端口根据mongoHQ文档,所以它们必须是正确的。

谢谢你提前帮忙。

第二次更新

我刚刚使用终端测试了mongodb连接字符串:

代码语言:javascript
复制
mongo mongodb://flame.mongohq.com:27044/notes -u foo -p bar

不幸的是这会让我的连接失败,老实说,我不知道为什么.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-14 04:13:48

我使用

代码语言:javascript
复制
uri =  URI.parse(ENV['MONGOHQ_URL'])
@mongo_connection = Mongo::Connection.from_uri( uri )
@mongo_db = @mongo_connection.db(uri.path.gsub(/^\//, ''))
@mongo_db.authenticate(uri.user, uri.password)

可以使用heroku config --long命令查找mongo

票数 8
EN

Stack Overflow用户

发布于 2010-09-14 10:16:19

刚才又试了一次,这一次,我用的是来自ping的ip地址:

所以,如果我改变了

代码语言:javascript
复制
db = Mongo::Connection.new('flame.mongohq.com', 27060).db("notes")
db.authenticate('fake', 'info')

至:

代码语言:javascript
复制
db = Mongo::Connection.new('184.73.224.5', 27060).db("notes")
db.authenticate('fake', 'info')

那会管用的..。

我仍然不明白为什么域名方法不能工作,但至少我可以完成:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3693490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档