2012-08-10 316 views
1

我的工作是将数据提交Mongolab Python程序,而我整个一个奇怪的异常运行:Mongolab拒绝连接

mongoengine.connection.ConnectionError: Cannot connect to database mongodb://<user>: 
<password>@ds035617.mongolab.com:35617/<mydatabase>: 
could not connect to localhost:27017: [Errno 10061] No connection could be made 
because the target machine actively refused it 

这是有问题的代码:

from mongoengine import * 
connect('tablename', "mongodb://<user>:<password>@ds035617.mongolab.com:35617/<mydatabase>") 

任何人有什么想法是什么错?

+0

而且?远程计算机显然阻止了通过防火墙的传入流量。你的任务来检查这个...不是我们的... – 2012-08-10 04:45:26

+2

远程机器(MongoLab)没有阻止来自外部的连接(我为MongoLab工作:)。 – will 2012-08-10 07:09:43

+0

@Maulwurfn,正如将指出的那样,远程机器不一定阻止传入流量。很明显,我在这里提问之前做了一些检查,我不懒惰。 – jdotjdot 2012-08-10 17:20:23

回答

2

我一般认为它是一种欠佳回答自己的问题,但我想通了(很简单)的答案,并希望将其记录下来,以确保其他人都一样好。

该问题未在connect函数中指定host=作为关键字参数。正确的函数调用将是:

from mongoengine import * 
connect('tablename', host="mongodb://<user>:<password>@ds035617.mongolab.com:35617/<mydatabase>") 
+0

“Stack Exchange总是明确地鼓励用户回答他们自己的问题”http://stackoverflow.com/help/self-answer – 2016-06-15 11:48:23

3

有几件事情我会检查:

(1)为什么错误信息说,该系统试图连接到本地主机:27017 ...? (2)为什么你的mongodb URI有真正的用户名和密码应该是“user”和“password”?

我的猜测是问题是(2),除非你为了这篇文章而遮盖了用户名和密码。

如果您仍然遇到[email protected]的问题,我们可以深入挖掘您的想法。

- 将会

+0

我完全不知道为什么它连接到本地主机;我在想我自己。也许'mongoengine'设置了一个本地代理......?我无法想象为什么;我从来没有遇到过这个问题,所以它从来没有出现过。至于(2),我实际上模糊了用户名和密码,并编辑了这个问题来反映这一点。 – jdotjdot 2012-08-10 17:21:29

0

它看起来像您使用的是MongoDB URI连接,但司机被解释的字符串作为数据库名称,并试图连接到默认为localhost:27017。按照mongoengine docs你想传递一个URI作为主机参数:


乌里风格的连接,也支持,只要您包括数据库名 - 只需提供该URI作为主机连接():

connect('project1', host='mongodb://localhost/database_name')