首页 > 解决方案 > Django 迁移:django.db.utils.OperationalError: (1824, "Failed to open the referenced table 'classroom_user'")

问题描述

我正在尝试将 Django 应用程序从开发服务器部署到生产服务器我已经使用 python 3.8.10 设置了 virtualenv,创建了 mysql 数据库,我在 virtualenv 中运行。我没有得到任何错误python manage.py check,运行时得到“没有检测到更改” python manage.py makemigrations,但是当我运行```python manage.py migrate``时,我得到以下信息:

要执行的操作:
应用所有迁移:admin、auth、contenttypes、sessions 正在
运行迁移:
正在应用 contenttypes.0001_initial... OK
Applying admin.0001_initial...Traceback(最近一次调用最后一次):...

回溯的最后一行:

Django.db.utils.OperationalError:(1824,“无法打开引用的表'classroom_user'”)

(“教室”是项目“codex”中应用程序的名称)我最近在我的开发服务器上重建了这个数据库中的所有表,没有任何问题。
生产服务器上的数据库为空。models.py 已就位且完整。我已经尝试使用空的迁移文件夹和删除的迁移文件夹。迁移确实创建了 django_admin_log、django_content_types、django_migrations,但没有创建其他表。

我在这方面看到的所有其他帖子都是关于外键约束的,但是在我的 models.py 中,所有具有外键的表都在键所在的表之后指定。

标签: pythonmysqldjangodjango-migrations

解决方案


好的,解决了。
使用稍旧版本的 Django(3.2.6 而不是 3.2.8)和在 Windows 服务器而不是 Linux 上,我能够得到不同的错误。这给了我一个关于我在其他帖子中看到的外键限制的错误,但这不是我以前见过的错误。

我必须首先为我的应用程序执行迁移(其中教室是项目中的应用程序。):
python manage.py makemigrations classroom
python manage.py migrate


推荐阅读