简体   繁体   English

django-nonrel syncdb和mongodb:pymongo.errors.OperationFailure

[英]django-nonrel syncdb and mongodb: pymongo.errors.OperationFailure

I am using django-nonrel with mongodb-engine I am getting the following error when I run python manage.py syncdb: 我正在使用django-nonrel与mongodb-engine我在运行python manage.py syncdb时遇到以下错误:

Traceback (most recent call last):
File "manage.py", line 22, in <module> execute_from_command_line(sys.argv)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
utility.execute()
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
self.execute(*args, **options.__dict__)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
output = self.handle(*args, **options)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/django/core/management/base.py", line 415, in handle
return self.handle_noargs(**options)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 147, in handle_noargs
index_sql = connection.creation.sql_indexes_for_model(model, self.style)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/django_mongodb_engine/creation.py", line 49, in sql_indexes_for_model
self._handle_oldstyle_indexes(ensure_index, meta)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/django_mongodb_engine/creation.py", line 116, in _handle_oldstyle_indexes
sparse=field.name in sparse_indexes)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/django_mongodb_engine/creation.py", line 42, in ensure_index
return collection.ensure_index(*args, **kwargs)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/pymongo/collection.py", line 1420, in ensure_index
self.__create_index(keys, kwargs)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/pymongo/collection.py", line 1298, in __create_index
sock_info, cmd, read_preference=ReadPreference.PRIMARY)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/pymongo/collection.py", line 208, in _command
read_concern=read_concern)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/pymongo/pool.py", line 239, in command
read_concern)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/pymongo/network.py", line 102, in command
helpers._check_command_response(response_doc, None, allowable_errors)
File "/Users/<user>/site/qmcdb/lib/python2.7/site-packages/pymongo/helpers.py", line 205, in _check_command_response
raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: The field 'sparse' is not valid for an _id index specification. Specification: { ns: "qmcdb_mongodb.django_admin_log", v: 2, sparse: false, unique: true, name: "_id_1", key: { _id: 1 } }

I have no idea what is wrong. 我不知道出了什么问题。 I've been trying to get mongodb to work with django and I have been having a lot of issues. 我一直试图让mongodb与django合作,我遇到了很多问题。 My settings.py: 我的settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django_mongodb_engine',
        'NAME': 'qmcdb_mongodb',
        'PORT': 27017,
        'HOST': 'localhost'
    }
}

I hope I have posted enough background information. 我希望我已经发布了足够的背景信息。 I would really appreciate any help. 我真的很感激任何帮助。

尝试在版本3.2中使用Mongo数据库,mongoengine和Mongo Server 3.4存在一些问题

1.Tested syncdb in MongoDB version 3.2 3.4, it still raising error. 1.在MongoDB 3.2版3.4中测试了syncdb,它仍然会引发错误。

2.In the MongoDB 2.6 syncdb is running fine with a minor unrelated problem.I still got an error in version 2.6 and fixed with this( https://gist.github.com/ielshareef/2986459 ). 2.在MongoDB 2.6中,syncdb运行正常,存在轻微的无关问题。我在版本2.6中仍然出现错误并使用此修复( https://gist.github.com/ielshareef/2986459 )。

3.django_mongodb_engine is so buggy which was forked from django1.3 . 3.django_mongodb_engine是如此的错误,它是从django1.3分叉出来的。 Also, this repo is outdated that last commit was on Jul 13, 2015. I should not recommend this package. 此外,这个回购已经过时,最后一次提交是在2015年7月13日。我不应该推荐这个包。

4.I would recommend https://github.com/MongoEngine/django-mongoengine 4.我会推荐https://github.com/MongoEngine/django-mongoengine

My hacky solution to this was modifying lines 115-116 of Lib\\site-packages\\django_mongodb_engine\\creation.py from this: 我的hacky解决方案是修改Lib\\site-packages\\django_mongodb_engine\\creation.py第115-116行:

ensure_index(column, unique=field.unique,
                     sparse=field.name in sparse_indexes)

to this: 对此:

ensure_index(column)

It seems to clear the error, but I'm sure it's gonna make something somewhere fail catastrophically because I have no idea what I'm doing. 它似乎清除了错误,但我确信它会让某些地方失败,因为我不知道我在做什么。

I'll be waiting on a better answer too. 我也会等待更好的答案。

I recommend you use: 我建议你使用:

pip3 install git+https://github.com/MongoEngine/django-mongoengine
Django 1.11.2
Python 3.6
MongoDB 3.4

Always is good, use versions updated of packages, use isolation of environment. 总是很好,使用更新包的版本,使用环境隔离。 https://virtualenvwrapper.readthedocs.io/en/latest/install.html https://virtualenvwrapper.readthedocs.io/en/latest/install.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 pymongo.errors.OperationFailure:错误 - pymongo.errors.OperationFailure: error Mongodb 和 Celery “pymongo.errors.OperationFailure:命令 createIndexes 需要身份验证” - Mongodb and Celery "pymongo.errors.OperationFailure: command createIndexes requires authentication" 我如何解决这个问题 pymongo.errors.OperationFailure? - How I can solve this problem pymongo.errors.OperationFailure? pymongo.errors.OperationFailure:数据库错误:无效的ns - pymongo.errors.OperationFailure: database error: Invalid ns pymongo.errors.OperationFailure:命令插入需要身份验证 - pymongo.errors.OperationFailure: command insert requires authentication pymongo.errors.OperationFailure:在 Heroku 上部署聊天机器人时身份验证失败 - pymongo.errors.OperationFailure: Authentication failed when deploying chatbot on Heroku pymongo.errors.OperationFailure:身份验证失败。 我需要从 html forms 保存文件 - pymongo.errors.OperationFailure: Authentication failed. I need to save files from html forms Django 管理站点上的“未连接到数据库”,MongoDB 通过 django-nonrel - 'Not connected to the database' on Django admin site with MongoDB through django-nonrel django-nonrel为模型属性指定MongoDB BSON元素名称 - django-nonrel specify MongoDB BSON element name to model attributes 如何使用Django-nonrel的MongoDB mapreduce? - How to use Django-nonrel's MongoDB mapreduce?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM