2012-11-26 55 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