【发布时间】:2015-12-05 23:49:29
【问题描述】:
我有一个 django 项目,其中包含许多不同的应用程序。我们删除了其中一个应用程序,现在当我们尝试删除用户时它失败了,抱怨该应用程序中的表不存在。任何地方都没有对该应用程序或表格的引用。测试,我发现如果我创建表,错误就会消失。
在谷歌搜索和四处搜索之后,我认为我已经弄清楚了。该应用程序在 django_content_type 中被引用,而 content_type_id 在 auth_permission 中被引用。因此,我从 auth_permission 和 auth_permission 中删除了具有该 content_type_id 的行,但我仍然收到错误消息。
我需要怎么做才能删除对此应用的引用,以便删除用户?
这是完整的堆栈跟踪:
Traceback:
File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.6/site-packages/django/contrib/admin/options.py" in wrapper
372. return self.admin_site.admin_view(view)(*args, **kwargs)
File "/usr/lib/python2.6/site-packages/django/utils/decorators.py" in _wrapped_view
91. response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.6/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
89. response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.6/site-packages/django/contrib/admin/sites.py" in inner
202. return view(request, *args, **kwargs)
File "/usr/lib/python2.6/site-packages/django/utils/decorators.py" in _wrapper
25. return bound_func(*args, **kwargs)
File "/usr/lib/python2.6/site-packages/django/utils/decorators.py" in _wrapped_view
91. response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.6/site-packages/django/utils/decorators.py" in bound_func
21. return func(self, *args2, **kwargs2)
File "/usr/lib/python2.6/site-packages/django/contrib/admin/options.py" in changelist_view
1205. response = self.response_action(request, queryset=cl.get_query_set(request))
File "/usr/lib/python2.6/site-packages/django/contrib/admin/options.py" in response_action
960. response = func(self, request, queryset)
File "/usr/lib/python2.6/site-packages/django/contrib/admin/actions.py" in delete_selected
35. queryset, opts, request.user, modeladmin.admin_site, using)
File "/usr/lib/python2.6/site-packages/django/contrib/admin/util.py" in get_deleted_objects
109. collector.collect(objs)
File "/usr/lib/python2.6/site-packages/django/contrib/admin/util.py" in collect
160. return super(NestedObjects, self).collect(objs, source_attr=source_attr, **kwargs)
File "/usr/lib/python2.6/site-packages/django/db/models/deletion.py" in collect
225. elif sub_objs:
File "/usr/lib/python2.6/site-packages/django/db/models/query.py" in __nonzero__
141. return type(self).__bool__(self)
File "/usr/lib/python2.6/site-packages/django/db/models/query.py" in __bool__
135. next(iter(self))
File "/usr/lib/python2.6/site-packages/django/db/models/query.py" in _result_iter
123. self._fill_cache()
File "/usr/lib/python2.6/site-packages/django/db/models/query.py" in _fill_cache
927. self._result_cache.append(next(self._iter))
File "/usr/lib/python2.6/site-packages/django/db/models/query.py" in iterator
301. for row in compiler.results_iter():
File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py" in results_iter
775. for rows in self.execute_sql(MULTI):
File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py" in execute_sql
840. cursor.execute(sql, params)
File "/usr/lib/python2.6/site-packages/django/db/backends/util.py" in execute
41. return self.cursor.execute(sql, params)
File "/usr/lib/python2.6/site-packages/django/db/backends/mysql/base.py" in execute
130. six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])
File "/usr/lib/python2.6/site-packages/django/db/backends/mysql/base.py" in execute
120. return self.cursor.execute(query, args)
File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py" in execute
173. self.errorhandler(self, exc, value)
File "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py" in defaulterrorhandler
36. raise errorclass, errorvalue
Exception Type: DatabaseError at /admin/auth/user/
Exception Value: (1146, "Table 'motor.reflection_resource_listeners' doesn't exist")
【问题讨论】:
-
你有什么不寻常的缓存设置吗?
-
启用 django 查询日志记录并查看正在执行的 equery(记录器中的 django.db.backends)。您可能已经能够在 mysql 日志中看到查询
-
谢谢。我什至不知道 django 查询日志。我通常只使用蛮力(和 pdb)来查找查询。我会调查的。
标签: python django django-admin django-orm