1

我正在尝试将 MongoDB 与 Django 的管理系统集成(根据 mongodb 网站上的 Tumblelog 教程,当我尝试时遇到错误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

```

4

3 回答 3

1

好像权限应用有问题,尝试添加djangotoolbox给你settings.py

NoSQL 的性质与 django ORM 不兼容,也不兼容auth它们permission依赖于JOINS协同工作的应用程序。

无论如何,你见过django-nonrel吗?django-nonrel 提供了更多的应用程序和解决方案来使用 MongoDB 和其他 NoSQL 数据存储。

于 2013-03-23T15:36:49.880 回答
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中进行了修复。

于 2013-03-25T03:08:13.757 回答
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 - 以分配新文件的错误结束。

非常小心地执行一个值。不过,我可能会遗漏一些东西。

于 2013-05-05T13:58:35.200 回答