You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Django从SQLite迁移到MySQL时的django.db.utils.IntegrityError

错误原因

你遇到的是django-filer模块的Folder表联合唯一约束冲突。报错信息里的唯一键filer_folder_parent_id_name_bc773258_uniq是filer模块自动给Folder表加的约束,要求同一个父文件夹下不能存在重名的文件夹。
执行python manage.py migrate时,django-filer会自动初始化创建默认根目录(本次冲突的是parent_id=1的Downloads文件夹),而你从SQLite导出的备份数据中也包含了同名的根目录,导入时就触发了重复键报错。

解决方案

按如下步骤操作即可解决:

  • 完成migrate操作后,先不要执行导入命令,进入Django交互环境:
    python manage.py shell
  • 在shell中删除migrate自动生成的所有filer默认文件夹数据:
from filer.models import Folder
Folder.objects.all().delete()
  • 退出shell后重新执行导入命令即可:
    python manage.py loaddata db.json
其他注意事项
  • 如果还有其他表报类似的唯一键冲突,可排查是否是第三方依赖在migrate时自动生成了预置数据,导入前清空对应表即可
  • MySQL默认字符串比较大小写不敏感,如果原SQLite库中存在同一个父目录下仅大小写不同的重名文件夹,需要先在原库修改重名项后重新导出数据
  • 若不需要保留filer的历史文件夹数据,可在导出时直接排除filer相关表,导出命令为:
    python manage.py dumpdata --exclude=filer > db.json
  • 全部数据导入完成后,建议执行自增序列重置命令,避免后续新增数据触发主键冲突:
    python manage.py sqlsequencereset 你的应用名 | python manage.py dbshell
    所有用到的应用都需要执行一遍该命令。

内容的提问来源于stack exchange,提问作者Micky Rajkumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:27:03