提问者:小点点

将现有站点更新到新的Django 1.5用户模型后,django_admin_log上出现完整性错误


显然,在将我的新用户表添加到站点之后,DJANGOADMINLOG仍然有一个FK to AUTHUSER表。有什么办法解决这个问题吗?我没有看到这个问题在舞台或地方,所以一定是发生了一些奇怪的事情。

回溯(最近的呼叫是最后一次):

文件“/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py”,第115行,get_response response=callback(request,*callback_args,**callback_kwargs)

文件“/app/.heroku/python/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/api/object_wrapper.py”,第220行,在调用self._nr_instance,args,kwargs中)

文件“/app/.heroku/python/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/hooks/framework_django.py”,第475行,包装器返回包装(*args,**kwargs)

文件“/app/.heroku/python/lib/python2.7/site-packages/django/contrib/admin/options.py”,第372行,在wrapper中返回self.admin_site.admin_view(view)(*args,**kwargs)

文件“/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py”,第91行,in_wrapped_view response=view_func(request,*args,**kwargs)

文件“/app/.heroku/python/lib/python2.7/site-packages/django/views/decorators/cache.py”,第89行,in_wrapped_view_func response=view_func(request,*args,**kwargs)

文件“/app/.heroku/python/lib/python2.7/site-packages/django/contrib/admin/sites.py”,第202行,内部返回视图(request,*args,**kwargs)

文件“/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py”,第25行,in_wrapper返回bound_func(*args,**kwargs)

文件“/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py”,第91行,in_wrapped_view response=view_func(request,*args,**kwargs)

bound_func返回函数(self,*args2,**kwargs2)中的文件“/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py”第21行

文件“/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py”,第223行,内部返回函数(*args,**kwargs)

文件“/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py”,第217行,在exit self.exiting中(exc_value,self.using)

文件“/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py”,第281行,在exiting commit(using=using)中

文件“/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py”,第152行,在commit connection.commit()中

commit self._commit()中的文件“/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/init.py”,第241行

文件“/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py”,第242行,in_commit six.reraise(utils.integrityerror,utils.integrityerror(*tuple(e.args)),sys.exc_info()[2])

文件“/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py”,第240行,in_commit返回self.connection.commit()

文件“/app/.heroku/python/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/hooks/database_dbapi2.py”,第68行,commit return self._nr_connection.commit()

IntegrityError:表“DJANGO_ADMIN_LOG”上得insert或update违反外键约束“DJANGO_ADMIN_LOG_USER_ID_FKEY”详细信息:表“AUTH_USER”中不存在键(user_id)=(2).


共1个答案

匿名用户

这是因为django_admin_log表仍然包含与旧的auth_user表的外键关系。

您需要删除它并重新创建表。

$ heroku pg:psql
psql => drop table django_admin_log;

Django<1.7

$ heroku run python manage.py syncdb

对于Django>=1.7

$ ./manage.py sqlmigrate admin 0001 | heroku pg:psql

就是这样:)

使用@dustinfarris Django 1.7编辑+答案精度