解决Django数据迁移1091错误:无法删除字段

听雨眠
听雨眠
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍在Django执行数据迁移时遇到的1091错误,提示无法删除指定列。通过分析生成的迁移文件,发现其中包含已存在于数据库的字段删除操作。解决方法是手动注释迁移文件中多余的RemoveField语句,保留必要的AlterField操作,重新运行migrate命令即可成功完成数据迁移。

Django迁移报错1091现象

问题描述

今日在Pycharm终端执行数据迁移时,第一步运行Python manage.py makemigrations命令未出现异常。然而在执行第二步Python manage.py migrate进行实际迁移时,系统抛出错误,具体报错信息见相关截图。

该错误的核心代码为1091,其含义是“无法删除'dt_id';请检查列/键是否存在”。这表明数据库层面可能并不存在需要删除的目标字段,或者迁移文件中的删除指令与当前数据库状态冲突。

错误原因分析与处理方案

问题的解决

分析:

造成此问题的原因通常涉及数据库字段结构与迁移日志的不一致。尽管数据库中该字段的修改可能已完成,但在执行数据迁移时,系统生成的迁移日志文件(例如名为0003_auto_20191011_2032.py的文件)中可能仍保留了针对某些字段的删除操作记录,导致迁移脚本试图删除数据库中不存在的列。


 # Generated by Django 2.0.6 on 2019-10-11 12:32
from django.db import migrations, models
class Migration(migrations.Migration):
  dependencies = [
    ('modelapp', '0002_student'),
  ]
  operations = [
    migrations.RemoveField(
      model_name='student',
      name='age',
    ),
    migrations.RemoveField(
      model_name='student',
      name='birthday',
    ),
    migrations.RemoveField(
      model_name='student',
      name='salary',
    ),
    migrations.AlterField(
      model_name='student',
      name='tel',
      field=models.CharField(max_length=20),
    ),
  ]

如上图所示,红色字体标注的部分即为导致数据迁移报错的具体原因。解决该问题的方法是将这些红色字体标注的代码行进行注释处理,使其不再执行。


# Generated by Django 2.0.6 on 2019-10-11 12:32
from django.db import migrations, models
class Migration(migrations.Migration):
  dependencies = [
    ('modelapp', '0002_student'),
  ]
  operations = [
    # migrations.RemoveField(
    #   model_name='student',
    #   name='age',
    # ),
    # migrations.RemoveField(
    #   model_name='student',
    #   name='birthday',
    # ),
    # migrations.RemoveField(
    #   model_name='student',
    #   name='salary',
    # ),
    migrations.AlterField(
      model_name='student',
      name='tel',
      field=models.CharField(max_length=20),
    ),
  ]

完成上述注释修改后,再次执行Python manage.py migrate命令,即可成功完成数据迁移操作。

总结

以上内容介绍了执行Django数据迁移时出现1091错误的排查与解决思路,希望能对遇到相同问题的开发者有所帮助。如有任何疑问,欢迎留言交流,我们将及时回复。感谢各位对本站的支持! 若本文对您有帮助,欢迎转载,请注明出处,谢谢!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表