我一直在Django上试用mongodb。我创建了一个超级用户,然后进入http://localhost:8000/admin/进行登录。输入我的凭据并提交后,出现了本文末尾给出的错误。我在这个项目中还有2个其他应用程序,并且还注解了管理员可以在appname/admin.py
中注册模型的行,即:
#admin.site.register(Tweet)
我该如何解决这个问题?如果您想了解有关代码或某些文件的任何进一步信息,请让我知道,我将在:)中编辑它
我认为这个错误是由mongo和django一起工作的方式引起的,但是不知道如何纠正它。
我相信python的安装和路由都能正常工作,因为它们是在部门管理员的协助下配置的。
**注意:**一些路径是由于Python的自定义安装,以防它看起来非常奇怪。我正在使用部门机器来做我的工作,因此路径。
模块/软件的相关版本:
[GCC 4.8.5 20150623(红帽4.8.5-16)](基于Linux)
- Python(3.6.4)
- Django(2.0.3)
- MongoDB shell 版本:(二、六、十二)
- mongod --版本结果为:数据库版本v2.6.12
- 臀沟(3.6.1)
- SQL语法分析(0.2.4)
- 琼戈(1.2.23)
settings.py
中的数据库代码:
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': 'hamish-djongo-db',
'USER': 'hamish_admin',
'PASSWORD': 'thishasbeencensoredfortheinternet',
}
}
shell中的错误:
Internal Server Error: /admin/
Traceback (most recent call last):
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/sql2mongo/query.py", line 454, in __iter__
yield from iter(self._query)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/sql2mongo/query.py", line 144, in __iter__
self._cursor = self._get_cursor()
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/sql2mongo/query.py", line 229, in _get_cursor
cur = self.db_ref[self.left_table].aggregate(pipeline)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/pymongo/collection.py", line 2185, in aggregate
**kwargs)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/pymongo/collection.py", line 2092, in _aggregate
client=self.__database.client)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/pymongo/pool.py", line 517, in command
collation=collation)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/pymongo/network.py", line 125, in command
parse_write_concern_error=parse_write_concern_error)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/pymongo/helpers.py", line 145, in _check_command_response
raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: exception: Unrecognized pipeline stage name: '$lookup'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
response = get_response(request)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 158, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 156, in _get_response
response = response.render()
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/response.py", line 106, in render
self.content = self.rendered_content
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/response.py", line 83, in rendered_content
content = template.render(context, self._request)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 175, in render
return self._render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 167, in _render
return self.nodelist.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 943, in render
bit = node.render_annotated(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 910, in render_annotated
return self.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/loader_tags.py", line 155, in render
return compiled_parent._render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 167, in _render
return self.nodelist.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 943, in render
bit = node.render_annotated(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 910, in render_annotated
return self.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/loader_tags.py", line 155, in render
return compiled_parent._render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 167, in _render
return self.nodelist.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 943, in render
bit = node.render_annotated(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 910, in render_annotated
return self.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/loader_tags.py", line 67, in render
result = block.nodelist.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 943, in render
bit = node.render_annotated(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 910, in render_annotated
return self.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/defaulttags.py", line 314, in render
return nodelist.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 943, in render
bit = node.render_annotated(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py", line 910, in render_annotated
return self.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/defaulttags.py", line 168, in render
len_values = len(values)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/models/query.py", line 254, in __len__
self._fetch_all()
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/models/query.py", line 1179, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/models/query.py", line 62, in __iter__
for row in compiler.results_iter(results):
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1460, in cursor_iter
for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1460, in <lambda>
for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/utils.py", line 96, in inner
return func(*args, **kwargs)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/cursor.py", line 59, in fetchmany
ret.append(self.result.next())
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/sql2mongo/query.py", line 448, in __next__
return next(self._result_generator)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/sql2mongo/query.py", line 466, in __iter__
raise exe from e
djongo.sql2mongo.SQLDecodeError: FAILED SQL: SELECT "django_admin_log"."id", "django_admin_log"."action_time", "django_admin_log"."user_id", "django_admin_log"."content_type_id", "django_admin_log"."object_id", "django_admin_log"."object_repr", "django_admin_log"."action_flag", "django_admin_log"."change_message", "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined", "django_content_type"."id", "django_content_type"."app_label", "django_content_type"."model" FROM "django_admin_log" INNER JOIN "auth_user" ON ("django_admin_log"."user_id" = "auth_user"."id") LEFT OUTER JOIN "django_content_type" ON ("django_admin_log"."content_type_id" = "django_content_type"."id") WHERE "django_admin_log"."user_id" = %(0)s ORDER BY "django_admin_log"."action_time" DESC LIMIT 10
Pymongo error: OrderedDict([('errmsg', "exception: Unrecognized pipeline stage name: '$lookup'"), ('code', 16436), ('ok', 0.0)])
Version: 1.2.23
[29/Mar/2018 12:42:09] "GET /admin/ HTTP/1.1" 500 339290
页面错误:
Environment:
Request Method: GET
Request URL: http://localhost:8000/admin/
Django Version: 2.0.3
Python Version: 3.6.4
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'widget_tweaks',
'blogtest',
'tweetish']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template /dcs/14/u1404526/.local/lib/python3.6/site-packages/django/contrib/admin/templates/admin/base.html, error at line 0
FAILED SQL: SELECT "django_admin_log"."id", "django_admin_log"."action_time", "django_admin_log"."user_id", "django_admin_log"."content_type_id", "django_admin_log"."object_id", "django_admin_log"."object_repr", "django_admin_log"."action_flag", "django_admin_log"."change_message", "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined", "django_content_type"."id", "django_content_type"."app_label", "django_content_type"."model" FROM "django_admin_log" INNER JOIN "auth_user" ON ("django_admin_log"."user_id" = "auth_user"."id") LEFT OUTER JOIN "django_content_type" ON ("django_admin_log"."content_type_id" = "django_content_type"."id") WHERE "django_admin_log"."user_id" = %(0)s ORDER BY "django_admin_log"."action_time" DESC LIMIT 10
Pymongo error: OrderedDict([('errmsg', "exception: Unrecognized pipeline stage name: '$lookup'"), ('code', 16436), ('ok', 0.0)])
Version: 1.2.23
1 : {% load i18n static %}<!DOCTYPE html>
2 : {% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %}
3 : <html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
4 : <head>
5 : <title>{% block title %}{% endblock %}</title>
6 : <link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
7 : {% block extrastyle %}{% endblock %}
8 : {% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />{% endif %}
9 : {% block extrahead %}{% endblock %}
10 : {% block responsive %}
Traceback:
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/sql2mongo/query.py" in __iter__
454. yield from iter(self._query)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/sql2mongo/query.py" in __iter__
144. self._cursor = self._get_cursor()
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/sql2mongo/query.py" in _get_cursor
229. cur = self.db_ref[self.left_table].aggregate(pipeline)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/pymongo/collection.py" in aggregate
2185. **kwargs)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/pymongo/collection.py" in _aggregate
2092. client=self.__database.client)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/pymongo/pool.py" in command
517. collation=collation)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/pymongo/network.py" in command
125. parse_write_concern_error=parse_write_concern_error)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/pymongo/helpers.py" in _check_command_response
145. raise OperationFailure(msg % errmsg, code, response)
The above exception (exception: Unrecognized pipeline stage name: '$lookup') was the direct cause of the following exception:
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
35. response = get_response(request)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
158. response = self.process_exception_by_middleware(e, request)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
156. response = response.render()
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/response.py" in render
106. self.content = self.rendered_content
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/response.py" in rendered_content
83. content = template.render(context, self._request)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/backends/django.py" in render
61. return self.template.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in render
175. return self._render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in _render
167. return self.nodelist.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in render
943. bit = node.render_annotated(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in render_annotated
910. return self.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/loader_tags.py" in render
155. return compiled_parent._render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in _render
167. return self.nodelist.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in render
943. bit = node.render_annotated(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in render_annotated
910. return self.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/loader_tags.py" in render
155. return compiled_parent._render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in _render
167. return self.nodelist.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in render
943. bit = node.render_annotated(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in render_annotated
910. return self.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/loader_tags.py" in render
67. result = block.nodelist.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in render
943. bit = node.render_annotated(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in render_annotated
910. return self.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/defaulttags.py" in render
314. return nodelist.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in render
943. bit = node.render_annotated(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/base.py" in render_annotated
910. return self.render(context)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/template/defaulttags.py" in render
168. len_values = len(values)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/models/query.py" in __len__
254. self._fetch_all()
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/models/query.py" in _fetch_all
1179. self._result_cache = list(self._iterable_class(self))
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/models/query.py" in __iter__
62. for row in compiler.results_iter(results):
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in cursor_iter
1460. for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in <lambda>
1460. for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/django/db/utils.py" in inner
96. return func(*args, **kwargs)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/cursor.py" in fetchmany
59. ret.append(self.result.next())
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/sql2mongo/query.py" in __next__
448. return next(self._result_generator)
File "/dcs/14/u1404526/.local/lib/python3.6/site-packages/djongo/sql2mongo/query.py" in __iter__
466. raise exe from e
Exception Type: SQLDecodeError at /admin/
Exception Value: FAILED SQL: SELECT "django_admin_log"."id", "django_admin_log"."action_time", "django_admin_log"."user_id", "django_admin_log"."content_type_id", "django_admin_log"."object_id", "django_admin_log"."object_repr", "django_admin_log"."action_flag", "django_admin_log"."change_message", "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined", "django_content_type"."id", "django_content_type"."app_label", "django_content_type"."model" FROM "django_admin_log" INNER JOIN "auth_user" ON ("django_admin_log"."user_id" = "auth_user"."id") LEFT OUTER JOIN "django_content_type" ON ("django_admin_log"."content_type_id" = "django_content_type"."id") WHERE "django_admin_log"."user_id" = %(0)s ORDER BY "django_admin_log"."action_time" DESC LIMIT 10
Pymongo error: OrderedDict([('errmsg', "exception: Unrecognized pipeline stage name: '$lookup'"), ('code', 16436), ('ok', 0.0)])
Version: 1.2.23
4条答案
按热度按时间3b6akqbq1#
感谢@oluwafemi-sule的评论,该问题已得到纠正。
我已经更新到Mongo 3.6.3来解决这个问题。
aor9mmx12#
也许可以尝试升级Django到3.1.7或更高版本。当我试图迁移时,我遇到了一个SQLDecodeError,我通过升级Django并在迁移前再次运行makemigrations来解决它。我以前的Django版本是2.1.7,显然这两个版本生成的迁移文件非常不同。
ruarlubt3#
我把我的django版本降级到3.2,它对我很有效。
quhf5bfb4#
错误:“djongo.sql2mongo.SQL解码错误:失败的SQL:选择”
解决方案:在这里您可以看到SQL失败了,因此首先安装mysqlclient,然后运行命令。
sudo apt-获取安装mysql-客户端
原因:Pymongo想将sql(默认查询语言)查询转换为mongoDB查询,但由于缺少mysql插件而无法处理。