执行makemigrations显示生成迁移文件但实际未创建,migrate提示需创建迁移
Django迁移异常排查方案(makemigrations生成文件但migrate无反应)
以下是针对该问题的具体排查步骤:
检查迁移文件的应用归属
打开生成的app_name/migrations/0XXX_Do_stuff.py,确认文件内class Migration下的app_label是否为app_name,dependencies里的迁移记录是否合理。同时检查该目录下的__init__.py是否被意外修改或删除。核对数据库迁移记录
登录MySQL数据库,执行SQL命令:SELECT * FROM django_migrations WHERE app = 'app_name';查看刚生成的迁移文件编号(如
0XXX_Do_stuff)是否已存在于表中。若存在,备份数据后执行删除命令:DELETE FROM django_migrations WHERE app = 'app_name' AND name = '0XXX_Do_stuff';之后重新尝试迁移。
验证INSTALLED_APPS配置
打开settings.py,确认app_name和app_name_too都在INSTALLED_APPS列表中,无拼写错误或重复添加的情况。指定应用执行迁移
不要直接执行全局迁移,尝试指定应用执行:python manage.py migrate app_name观察是否能正常应用迁移文件。
检测模型与迁移的一致性
执行命令检测模型变更:python manage.py makemigrations --check查看系统识别的模型变更是否与生成的迁移文件内容匹配。若存在未被检测到的变更,需检查模型中是否有动态生成的字段或特殊类型字段导致检测异常。
清理迁移缓存
删除项目根目录及各app下migrations目录中的__pycache__文件夹,然后重新执行:python manage.py makemigrations python manage.py migrate
内容的提问来源于stack exchange,提问作者Mazen Mamdouh
相关产品推荐
相关产品推荐

