TOP

IntegrityError at /admin/users/userprofile/add/ (1452, 'Cannot add or update a child row: a foreign key constraint fails (`mxonline`.`django_admin_log`, CONSTRAINT `django_admin_log_user_id_c564eba6_

报错现象

在执行 django 后台管理的时候添加数据导致 1452 错误

报错代码

IntegrityError at /admin/users/userprofile/add/

(1452, 'Cannot add or update a child row: a foreign key constraint fails (`mxonline`.`django_admin_log`, CONSTRAINT `django_admin_log_user_id_c564eba6_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`))')

分析报错

因为有做 auth 的自定义扩展字段. 具体的应该是 自定义表 和 内置的 auth 表的 FK 外键无法映射导致

解决方式有两种

  建立映射

  取消映射检查

问题解决

这里采用第二种方式

直接在 settings 中设置 取消检查即可 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "mxonline",
        "USER": "root",
        "PASSWORD": "123456",
        "HOST": "127.0.0.1",
        'OPTIONS': {
            "init_command": "SET foreign_key_checks = 0;",
        }
    },
}

添加 OPTIONS 属性取消外键检查即可添加成功

 

posted @ 2019-03-14 11:57  羊驼之歌  阅读(967)  评论(0编辑  收藏  举报