Django数据备份与恢复、数据相互引用冲突解除

Django自带数据备份与恢复功能:
备份:python manage.py dumpdata appname>datafilename.json
恢复:python manage.py loaddata datafilename.json

数据是以APP为单位进行操作,通常需要按照依赖顺序导入,也就是先导入被依赖的APP model。但是由于数据库设计不佳,存在不同app的model相互引用(外键)的情况,那么在导入时,就会因为被依赖model不存在而无法导入。

django.db.utils.IntegrityError: Problem installing fixtures: 错误: 插入或更新表 "basedata_uploadfile" 违反外键约束 "basedata_uploadfile_user_id_2b50c62b_fk_staff_user_id"
DETAIL: 键值对(user_id)=(1)没有在表"staff_user"中出现.

解决办法:手工删除json文件中的依赖model部分,解除相互引用冲突,之后可正常导入。

教训:设计model时尽量避免不同app的model相互引用

你可能感兴趣的:(Django数据备份与恢复、数据相互引用冲突解除)