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

Django执行migrate报1824错误无法打开引用表classroom_user怎么办?

你遇到的报错核心是Django内置admin应用的迁移执行顺序早于你的自定义classroom应用迁移,admin表需要关联你自定义的用户表classroom_user,但迁移执行到admin的时候你的自定义用户表还未创建,因此触发外键引用失败。

解决步骤

  • 首先清空生产环境的MySQL数据库,同时清理项目所有应用migrations目录下除__init__.py外的所有文件,如果之前删除了整个migrations文件夹,需要手动重建文件夹并新增空的__init__.py文件。
  • 检查项目settings.py的配置:
    1. 确认AUTH_USER_MODEL配置正确,格式为AUTH_USER_MODEL = "classroom.User",无应用名、模型名拼写错误
    2. 调整INSTALLED_APPS的顺序,将你的自定义应用classroom放在django.contrib.admin之前,确保Django优先执行自定义应用的迁移
  • 重新生成迁移文件,先执行指定应用的迁移生成命令:
    python manage.py makemigrations classroom
    
    确认输出包含classroom应用的迁移生成记录后,再执行全局迁移生成:
    python manage.py makemigrations
    
  • 最后执行迁移操作:
    python manage.py migrate
    

如果执行后仍报错,需额外排查MySQL大小写敏感问题:Linux环境下MySQL默认表名大小写敏感,Windows开发环境默认不敏感,可在MySQL配置文件中添加lower_case_table_names = 1(需重启数据库生效,新数据库可直接配置,已有数据库需备份后重新初始化)。

内容的提问来源于stack exchange,提问作者Matthew Tomsho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:54:04