报错现象
在执行 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": "",
"HOST": "127.0.0.1",
'OPTIONS': {
"init_command": "SET foreign_key_checks = 0;",
}
},
}
添加 OPTIONS 属性取消外键检查即可添加成功