将现有站点更新到新的Django 1.5用户模型后,django_admin_log上的完整性错误 [英] Integrity error on django_admin_log after updating existing site to new Django 1.5 user model
问题描述
显然,在我的新用户表添加到站点后,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屋!