测试期间数据库错误:无法更改列

时间:2020-03-23 15:05:02

标签: django

我更改了模型的一个字段,以创建迁移并将其应用。没有错误。但是当我尝试运行测试时,出现了错误。

django.db.utils.OperationalError: (1833, "Cannot change column 'rfiid': used in a foreign key constraint 'elements_attachments_rfi_id_bc723558_fk_rfis_rfiid' of table 'test_smap_production.elements_attachments'")
我更改的

字段- rfiid 。我将其从 AutoField 切换为 CharField

models.py

class Rfis(models.Model):
    rfiid = models.CharField(max_length=6, primary_key=True)
    ....

迁移成功,并且数据库中没有已创建的模型实例。为什么会发生这种错误,以及如何纠正?

ps.s。

class ElementsAttachments(models.Model):
    e = models.ForeignKey('Elements', models.DO_NOTHING)
    attachment = models.ForeignKey('Attachments', models.DO_NOTHING)
    rfi = models.ForeignKey('Rfis', models.DO_NOTHING)
    timestamp = models.DateTimeField(auto_now=True)
    active = models.IntegerField()
    vendor_response = models.IntegerField(blank=True, null=True)

1 个答案:

答案 0 :(得分:0)

一种不干净且冒险的方法是删除所有以前的迁移并进行新的迁移。

警告:这是有风险的,如果数据库中已经有数据,则可能造成损害。