我正在尝试将MongoDB与Django的管理系统(as per the Tumblelog tutorial on the mongodb site集成在一起,并在尝试python manage.py syncdb
时遇到错误 - 它给了我这个错误 - 而且我不完全确定该做什么关于它。谢谢!
pymongo.errors.OperationFailure: command SON([('create', u'auth_permission'), ('max', False), ('capped', False), ('size', 0.0)]) failed: exception: create collection invalid size spec
```
答案 0 :(得分:1)
似乎权限应用存在问题,请尝试向djangotoolbox
添加settings.py
。
NoSQL的性质与django ORM不兼容auth
,permission
个应用程序,它们依赖于JOINS
一起工作。
无论如何,你见过django-nonrel吗? django-nonrel为MongoDB和其他NoSQL数据存储提供了更多的应用程序和解决方案。
答案 1 :(得分:1)
请参阅此链接:https://github.com/django-nonrel/mongodb-engine/pull/134
主要问题是对于具有无上限大小的集合,请设置较大的上限大小,以便后续命令不会失败。
我假设你在使用django-nonrel 1.3.1。我从django-nonrel / mongodb-engine中分离出来并在https://github.com/statguyjames/mongodb-engine.git@master中修复。
答案 2 :(得分:0)
首先,我通过完全替换sql_create_model()方法尝试了statguy的解决方案 - 但它不起作用,一些错误不断出现。
然后我做的是我添加了
size = getattr(model._meta, 'collection_size', None)
if size is not None:
kwargs['size'] = size
else:
kwargs['size'] = 10000000000
之后
for option, mongo_option in [
('capped', 'capped'),
('collection_size', 'size'),
('collection_max', 'max')
]:
kwargs[mongo_option] = getattr(model._meta, option, False)
来自django_mongodb_engine的文件creation.py。
这种错误不再出现了。但是,由于这个巨大的价值,mongo将在磁盘上分配一些文件,这些文件基本上将我当前的数据库从几MB变为大约17GB - 以错误分配新文件。
如此谨慎地执行一个值。不过,我可能会遗漏一些东西。