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。
模型.py
class Rfis(models.Model):
rfiid = models.CharField(max_length=6, primary_key=True)
....
迁移成功,并且数据库中没有已创建的模型实例。为什么会出现这样的错误以及如何纠正?
ps
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)
解决方案
一种不干净且有风险的方法是删除所有以前的迁移并进行新的迁移。
警告:这是有风险的,如果您的数据库中已有数据,可能会造成损害。
推荐阅读
- in-app-purchase - 如果我想检查用户应用内订阅是否过期,expiration_intent 有什么用?
- sql - 在 Google BigQuery SQL 中计算 HMAC
- python - 如何在 python 中编写“python /home/pi/pipresents/pipresents.py -p pp_mediashow_1p3”脚本
- javascript - 如何获取用于向服务器发出 AJAX 请求的基本目录
- javascript - 如何在 python 或 Javascript 中从带有 Down 的 UTM 转换为带有 Altitude 的 LatLng
- html - 与不同背景重叠 td
- hazelcast - 如何使用谓词从 Hazelcast IMap 中获取值?
- php - {} 在 php 中包裹我的变量是否会降低 sql 注入风险?
- android - 为什么我不能对 TextView textColor 使用数据绑定?
- azure-functions - 如何从 Azure Functions 调用 Microsoft Graph