Python Django数据库错误:未安装social_auth时缺少表social_auth_usersocialauth

Python Django数据库错误:未安装social_auth时缺少表social_auth_usersocialauth,python,django,tastypie,Python,Django,Tastypie,我正在尝试处理Django应用程序中的一个非常令人费解的错误。当DEBUG=False时,尝试删除用户(通过user.delete())会出现以下数据库错误: DatabaseError: relation "social_auth_usersocialauth" does not exist LINE 1: ...", "social_auth_usersocialauth"."extra_data" FROM "social_au... 但是,我在已安装的应用程序中没有social_aut

我正在尝试处理Django应用程序中的一个非常令人费解的错误。当DEBUG=False时,尝试删除用户(通过
user.delete()
)会出现以下数据库错误:

DatabaseError: relation "social_auth_usersocialauth" does not exist
LINE 1: ...", "social_auth_usersocialauth"."extra_data" FROM "social_au...
但是,我在已安装的应用程序中没有social_auth或类似名称的任何东西,我的数据库中也没有任何此类表,我的任何代码也没有引用任何此类内容(我在整个项目文件夹中对“social”进行了文本搜索),而且,当DEBUG=True时,这种方法也可以正常工作。social_auth安装在我的系统和PYTHONPATH上,但我看不出这个应用程序从何而来,它的数据库中应该有social_auth的表,更不用说为什么它只在DEBUG=False时才这么认为了


我的应用程序可以从哪些可能的途径获取此表?我如何才能说服它不应该在那里?

此表是由
django social auth
应用程序创建的


看起来您已将其添加到项目中,但尚未启动
migrate
(或
syncdb
)。

此问题可能是由实现的已保存的泛型关系造成的。Django中的关系不仅是静态的,由模型和安装的应用程序实现,而且是动态的,由表
Django内容类型实现,它保存从数字id到应用程序标签+模型的映射。可能的动态关系的一个示例是权限或注释。您可以拥有或没有对任何已安装应用程序的任何表的权限。您可以在不更改任何模型的情况下,对任何内容(例如文章、用户和评论本身)编写评论。此关系通过保存与该模型(表)相关的ContentType的数字id和相关对象(行)的主键来实现

Django并不期望有人可以手动操作数据库。如果在卸载应用程序后运行
syncdb
,则south会询问您是否要自动删除孤立内容类型。然后可以安全地删除未使用的表,而无需以后引用

(可能的黑客行为:
delete from django\u content\u type,其中app\u label='social'u auth'
south
是无误的。)

问题的许多方面仍然悬而未决

编辑

为什么不是正确的方法:所有泛型关系都是从子代到父代的,有关该关系的所有数据都保存在子代中。如果从已安装的应用程序中删除了子应用程序,那么django.db代码将无法再尝试删除子应用程序,因为它无法识别哪些列包含关系数据。

是否可以进行回溯?(一些线索是有用的,因为在Djano源代码中测试“if settings.DEBUG”的频率超过30次。)可能通过django中删除的代码发送回溯。django.contrib.admin没有像我预期的那样调用db,而是通过django\u projects/kinwins sever/kinwins/apps/users/api.py中的代码从回调到
tastypi
。如果非Django代码介于两者之间,则不可能考虑奇怪的调试行为。另一方面,您可以轻松地记录有问题的查询。由于格式化问题,我继续回答。如果使用普通的Django admin而不是
tastype
,您是否看到了同样的问题?调试真/假之间有相同的区别吗?嗯,应该更容易在Postgresql临时数据库中打开错误日志记录,并查看与最后一些错误相关的查询。如果我一开始就知道您使用的是tastypie而不是普通的django,我将永远不会尝试回答这个问题。是的,当我尝试通过django admin删除时也会发生同样的情况,而且只有当DEBUG=False时才会发生。不过,正如我在问题描述中指定的,事实上,我没有在我安装的应用程序中使用social_auth作为前缀,也没有任何代码引用它。我曾尝试过各种第三方应用程序,在确定django social auth不是我要找的东西之前,我可能曾短暂尝试过将django social auth添加到该项目中,但如果是这样的话,我早就卸载了它,并尽我所能删除了它的所有痕迹——我看不出它仍然应该寻找那些表的任何可能的原因。(为了确认,
syncdb
不会尝试创建任何django social auth表,
migrate django social auth
migrate social_auth
告诉我没有这样的应用。)嗯,可能有些已安装的应用程序需要django social auth?这看起来很有希望,但我一直在使用South,而且
syncdb
没有检测到任何孤立的内容类型,并且
从django_内容类型中选择不同的应用程序标签
不会让我获得
social_auth
(或者其他不应该存在的内容),但错误仍在发生。