2012-08-10 356 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')