在表“django_admin_log”上插入或更新在管理员中保存新模型时违反外键约束 [英] Insert or update on table "django_admin_log" violates foreign key constraint when saving new model in admin

查看:277
本文介绍了在表“django_admin_log”上插入或更新在管理员中保存新模型时违反外键约束的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 回溯:

在管理员中保存模型的新实例时,我会在追溯中获得以下IntegrityError:

文件/venv/lib/python2.7/site-packages/django/core/handlers/base.pyin get_response
149. response = self.process_exception_by_middleware(e,request )

文件/users/dan/project/venv/lib/python2.7/site-packages/django/core/handlers/base.pyin get_response
147. response = wrapped_callback(request,* callback_args,** callback_kwargs)

文件/users/dan/project/venv/lib/python2.7/site-packages/django/contrib/admin/options.py在包装中
541. return self.admin_site.admin_view(view)(* args,** kwargs)

文件/users/dan/project/venv/lib/python2.7/ _wrapped_view
中的site-packages / django / utils / decorators.py149. response = view_func(request,* args,** kwargs)

文件/ users / dan / project / VENV / LIB / python2.7 / SI _wrapped_view_func
中的te-packages / django / views / decorators / cache.py57. response = view_func(request,* args,** kwargs)

文件/ users / dan /内部
中的项目/ venv / lib / python2.7 / site-packages / django / contrib / admin / sites.py返回视图(request,* args,** kwargs)

文件/users/dan/project/venv/lib/python2.7/site-packages/django/contrib/admin/options.pyin add_view
1435. return self.changeform_view(request,None, form_url,extra_context)

在_wrapper
中的文件/users/dan/project/venv/lib/python2.7/site-packages/django/utils/decorators.py67.返回bound_func(* args,** kwargs)

在_wrapped_view $ b中的文件/users/dan/project/venv/lib/python2.7/site-packages/django/utils/decorators.py $ b 149. response = view_func(request,* args,** kwargs)

文件/users/dan/project/venv/lib/python2.7/site-packages/django/utils/ decorator.py在bound_func
63。 return func .__ get __(self,type(self))(* args2,** kwargs2)

文件/users/dan/project/venv/lib/python2.7/site-packages/django /utils/decorators.pyin inner
184. return func(* args,** kwargs)

文件/users/dan/project/venv/lib/python2.7/ __exit__中的site-packages / django / db / transaction.py
223. connection.commit()

文件/users/dan/project/venv/lib/python2.7/提交
中的site-packages / django / db / backends / base / base.py242. self._commit()

文件/ users / dan / project / venv / lib / _commit
中的python2.7 / site-packages / django / db / backends / base / base.py返回self.connection.commit()

文件/ users / dan __exit__中的/project/venv/lib/python2.7/site-packages/django/db/utils.py
95. six.reraise(dj_exc_type,dj_exc_value,traceback)

文件_com中的/users/dan/project/venv/lib/python2.7/site-packages/django/db/backends/base/base.py mit
211. return self.connection.commit()

例外类型:IntegrityError at / admin / app / invitation / add /
异常值:在表上插入或更新 django_admin_log违反外键约束django_admin_log_user_id_52fdd58701c5f563_fk_auth_user_id
DETAIL:Key(user_id)=(3)不存在于表auth_user中。

完全相同的代码在另一台机器上运行正常。

解决方案

看起来Django用户表不知何故已经过时,包含一个过时的主键。不幸的是,运行 ./ manage.py migrate 似乎没有修复任何东西,但是从老Django trac票,我能够弄清楚如何轻松解决这个问题(警告,你将丢失你的管理员日志)。

  ./ manage.py migrate admin 0001 
echoDROP TABLE django_admin_log; | ./manage.py dbshel​​l
./manage.py sqlmigrate admin 0001 | python manage.py dbshel​​l
./manage.py migrate admin

我确定我可以在PostgreSQL中运行更新,但效果不错,但我没有保留任何数据。


When saving a new instance of a model in the admin, I get the following IntegrityError in a traceback:

Traceback:

File "/venv/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  149.                     response = self.process_exception_by_middleware(e, request)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  147.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper
  541.                 return self.admin_site.admin_view(view)(*args, **kwargs)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  149.                     response = view_func(request, *args, **kwargs)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  57.         response = view_func(request, *args, **kwargs)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner
  244.             return view(request, *args, **kwargs)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/contrib/admin/options.py" in add_view
  1435.         return self.changeform_view(request, None, form_url, extra_context)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper
  67.             return bound_func(*args, **kwargs)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  149.                     response = view_func(request, *args, **kwargs)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func
  63.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/utils/decorators.py" in inner
  184.                     return func(*args, **kwargs)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/db/transaction.py" in __exit__
  223.                         connection.commit()

File "/users/dan/project/venv/lib/python2.7/site-packages/django/db/backends/base/base.py" in commit
  242.         self._commit()

File "/users/dan/project/venv/lib/python2.7/site-packages/django/db/backends/base/base.py" in _commit
  211.                 return self.connection.commit()

File "/users/dan/project/venv/lib/python2.7/site-packages/django/db/utils.py" in __exit__
  95.                 six.reraise(dj_exc_type, dj_exc_value, traceback)

File "/users/dan/project/venv/lib/python2.7/site-packages/django/db/backends/base/base.py" in _commit
  211.                 return self.connection.commit()

Exception Type: IntegrityError at /admin/app/invitation/add/
Exception Value: insert or update on table "django_admin_log" violates foreign key constraint "django_admin_log_user_id_52fdd58701c5f563_fk_auth_user_id"
DETAIL:  Key (user_id)=(3) is not present in table "auth_user".

The exact same code works perfectly on another machine.

解决方案

Looks like the Django user table somehow got stale and contained an outdated primary key. Unfortunately, running ./manage.py migrate didn't seem to fix anything, but with a little help from an old Django trac ticket, I was able to figure out how to easily fix this (warning, you will lose your admin logs).

./manage.py migrate admin 0001
echo "DROP TABLE django_admin_log;" | ./manage.py dbshell
./manage.py sqlmigrate admin 0001 | python manage.py dbshell
./manage.py migrate admin

I'm sure I could run an update in PostgreSQL to the same effect, but I didn't have any data I was worried about keeping.

这篇关于在表“django_admin_log”上插入或更新在管理员中保存新模型时违反外键约束的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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