将现有站点更新到新的Django 1.5用户模型后,django_admin_log上的完整性错误 [英] Integrity error on django_admin_log after updating existing site to new Django 1.5 user model

查看:95
本文介绍了将现有站点更新到新的Django 1.5用户模型后,django_admin_log上的完整性错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

显然,在我的新用户表添加到站点后,django_admin_log仍然有一个FK到auth_user表。任何方式来解决这个问题?我没有在分期或本地看到这个问题,所以奇怪的事情已经发生了。



追溯(最近最近通话)



< blockquote>

文件/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py,第115行,get_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行,包装器
return wrapped(* args ,** kwargs)



文件/app/.heroku/python/lib/python2.7/site-packages/django/contrib/admin/options.py ,第372行,包装中的
return self.admin_site.admin_view(view)(* args,** kwargs)



文件/app/.heroku/蟒蛇/ lib目录/ python2.7 /站点包/ Django的/ UT在/wrap_view
response = view_func(request,* args,** kwargs)



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



文件/app/.heroku/python/lib/python2.7/site-packages/django/contrib/admin/sites.py,第202行,内
return view(request,* args,** kwargs)



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



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



文件/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py,第21行,bound_func
return func(self , *一个rgs2,** kwargs2)



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



文件/app/.heroku/python/lib/python2.7/
self.exiting(exc_value,self.using)



文件/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py,第281行退出
commit(using = using) p>

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



文件/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/ init .py,行241,在提交
self._commit()



文件​​/app/.heroku/python/lib/ python2.7 / site-packages / django / db / backends / postgresql_psycopg2 / base.py,第242行在_commit
si x.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行_commit
return self.connection.commit()



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



IntegrityError:在表django_admin_log上插入或更新违反外键约束django_admin_log_user_id_fkey
DETAIL: Key(user_id)=(2)不存在于表auth_user中。



解决方案

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



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

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

对于Django< 1.7

  $ heroku运行python manage.py syncdb 

而对于Django> = 1.7

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

就是这样:)


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



Apparently after adding my new user table to the site, django_admin_log still has a FK to auth_user table. Any way to address this? I didn't see this problem in staging or locally so something odd must have taken place.

Traceback (most recent call last) :

File "/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py", line 115, in get_response response = callback(request, *callback_args, **callback_kwargs)

File "/app/.heroku/python/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/api/object_wrapper.py", line 220, in call self._nr_instance, args, kwargs)

File "/app/.heroku/python/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/hooks/framework_django.py", line 475, in wrapper return wrapped(*args, **kwargs)

File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/admin/options.py", line 372, in wrapper return self.admin_site.admin_view(view)(*args, **kwargs)

File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py", line 91, in _wrapped_view response = view_func(request, *args, **kwargs)

File "/app/.heroku/python/lib/python2.7/site-packages/django/views/decorators/cache.py", line 89, in _wrapped_view_func response = view_func(request, *args, **kwargs)

File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/admin/sites.py", line 202, in inner return view(request, *args, **kwargs)

File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py", line 25, in _wrapper return bound_func(*args, **kwargs)

File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py", line 91, in _wrapped_view response = view_func(request, *args, **kwargs)

File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py", line 21, in bound_func return func(self, *args2, **kwargs2)

File "/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py", line 223, in inner return func(*args, **kwargs)

File "/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py", line 217, in exit self.exiting(exc_value, self.using)

File "/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py", line 281, in exiting commit(using=using)

File "/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py", line 152, in commit connection.commit()

File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/init.py", line 241, in commit self._commit()

File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 242, in _commit six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])

File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 240, in _commit return self.connection.commit()

File "/app/.heroku/python/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/hooks/database_dbapi2.py", line 68, in commit return self._nr_connection.commit()

IntegrityError: insert or update on table "django_admin_log" violates foreign key constraint "django_admin_log_user_id_fkey" DETAIL: Key (user_id)=(2) is not present in table "auth_user".

解决方案

That because the django_admin_log table still contains a foreign key relation to the old auth_user table.

You need to drop this and recreate the table.

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

For Django < 1.7

$ heroku run python manage.py syncdb

And for Django >= 1.7

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

And that's it :)

EDITED with @dustinfarris Django 1.7+ answer precision

这篇关于将现有站点更新到新的Django 1.5用户模型后,django_admin_log上的完整性错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆