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

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

本文介绍在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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。