2012-11-26 54 views
0

[已解決]成功完成django tutorial後,我嘗試使用mongoDB作爲數據庫,其中Django MongoDB Engine。這是settings.py數據庫配置:Django MongoDB引擎連接失敗

DATABASES = { 
    'default': { 
     'ENGINE': 'django_mongodb_engine', 
     'NAME': 'test',        
     'HOST': 'localhost',    
     'PORT': 27017,     
#  'OPTIONS' : { 
#   'slave_okay' : True, 
#  } 
    } 
} 

這是錯誤消息我得到的,運行python manage.py syncdb 後:

raise AutoReconnect("could not find master/primary") 
pymongo.errors.AutoReconnect: could not find master/primary 

我得到這個錯誤,甚至關停MongoDB服務器後,讓我發現這需要成爲一個連接問題。我發佈了一個關於如何解決這個問題的答案。


使用Ubuntu 12.04 LTS 64位,Python 2.7版,Django的1.4.2,MongoDB的x86_64的2.2.1(清潔新安裝)

+0

您是否設置了副本集?如果您只連接到單個服務器'slave_okay'選項沒有任何意義... –

+0

正如我所提到的,我不使用副本集。最初,我沒有使用「OPTIONS」條目,但錯誤是完全一樣的。我補充說,因爲我認爲這可能有幫助。無論有沒有它,我都會得到同樣的錯誤。 – DrKaoliN

+0

ns無效僅表示在您連接的數據庫中沒有用戶集合。你的數據庫沒有損壞 - 它顯然沒有包含預期的合適的集合/模式。 –

回答

3

我解決了這個非常簡單,我在我自己幾乎羞愧問這個問題擺在首位,但我希望這將是有益的方式:

我只需鍵入到終端升級Django MongoDB Engine

sudo pip install git+https://github.com/django-nonrel/mongodb-engine --upgrade 

就是這樣。

0

你可以嘗試運行...

db.repairDatabase() 

從蒙戈終端?

+0

那,並開始'mongod - 修復',沒有幫助。 – DrKaoliN

+0

'db.repairDatabase()'重新啓動'{「ok」:1}'。但之後,'db.users.validate()'返回相同的'{「errmsg」:「ns not found」,「ok」:0,「valid」:false}',我仍然無法連接到數據庫與Django。 – DrKaoliN