[英]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.