【发布时间】:2019-01-23 15:21:10
【问题描述】:
我正在尝试按照简单的规则向我的数据库中的模型添加一个布尔字段:
- add field to model
- python manage.py makemigrations app
- python manage.py migrate app
除了 99% 的时间外,所有时间都有效。因此,在第二步(makemigrations)中,随着我在模型中新添加的字段急需使用,我收到一个错误:
django.db.utils.OperationalError: (1054, "Unknown column 'model.field' in 'field list'")
非常好。它不让我通过添加新字段来进行迁移.....因为它找不到我要新添加的字段...非常有意义!
无论如何,我已经删除了所有迁移,删除了我的新字段,再次进行迁移,迁移......一切都很好 - 所以现在我只有 1 个迁移文件 (0001)......
按照与上述相同的步骤...错误
我在这里错过了什么可笑的东西吗?我的意思是,向模型添加字段非常简单,我可能已经做了 1000 次。姜戈为什么这么逗我
编辑:答案:
好的,我已经完成了。
在删除迁移文件、截断迁移表并使用 0001_initial.py 迁移后,我创建了一个空迁移文件(python manage.py makemigrations --empty app)并手动添加了该字段......然后我迁移了它奏效了!老实说,对此感到困惑,但至少已经做出了改变:
- 删除所有迁移文件
- 截断 django_migrations 表
- 评论新的布尔字段
- 运行 python manage.py makemigrations
- 运行 python manage.py migrate --fake
- 运行 python manage.py makemigrations --empty app
-
将字段手动添加到操作中的空迁移文件中:
migrations.AddField('modelName', 'fieldName', models.BooleanField(default=False)), 运行 python manage.py migrate
- 取消注释新的布尔字段,使其代表您在迁移操作中所做的内容
【问题讨论】:
-
好吧,通过删除所有旧的迁移文件,现在新的迁移文件将从头开始构建一个数据库。但是数据库不是从零开始的,它已经有很多表(和列)。所以它会抱怨重复的表/列/等。
-
但是这个错误发生在我这样做之前。当我这样做时,迁移工作正常。当我尝试添加一个新字段时,它会抱怨。与任何重复无关...
标签: django