django - django.db.utils.IntegrityError: 1062, 运行 Django 迁移时键的重复条目
问题描述
我的 django 迁移有问题。在进行更改之前,我的表格包含以下列:
STATUS = (
('Active', 'Active'),
('Pending', 'Pending'),
('Incomplete', 'Incomplete')
)
id = models.CharField(primary_key=True, max_length=50, unique=True, editable=False, default=uuid.uuid4)
name = models.CharField(max_length=100, null=False, default='')
country = models.CharField(max_length=100, choices=COUNTRY, null=True, blank=True)
postcode = models.CharField(max_length=20, null=False, blank=True)
address = models.TextField(max_length=200, null=False, blank=True)
status = models.CharField(max_length=20, choices=STATUS, default='Pending')
created_on = models.DateTimeField(default=timezone.now, editable=False)
balance = models.DecimalField(default='0.00', max_digits=16, decimal_places=2, null=True, editable=True)
但是当我添加新字段时:
api_key = models.CharField(max_length=50, unique=True, editable=False, default=uuid.uuid4)
key_exp = models.DateTimeField(default=one_day_hence, editable=False)
我不断得到
django.db.utils.IntegrityError:(1062,“重复条目'fc1d481d-add2-4d9c-92d9-a1b05018730a'键'api_key'”)
运行迁移时。
首先,我觉得这很可疑,因为 django 将为 any 提供不同的值default=uuid.uuid4
。我尝试迁移了几次,但我得到了同样的错误,但使用了不同的密钥。其次,我试图删除unique=True
,但这并没有改变任何东西,错误是一样的。
知道为什么以及如何解决这个问题吗?
编辑:
我发现为什么会发生这种情况......我的表中已经有一些记录,并且在迁移时,djangoapi_key
为所有现有记录添加了具有相同默认值的新列。(我在删除unique
字段并删除最新迁移后发现了这个)
它确实会为新记录添加不同的值,但我怎样才能让它为表中的现有记录添加不同的值?
解决方案
推荐阅读
- arrays - Slice Method regarding the return of a certain amount of letters in an array
- c# - How to configure registration/logIn into a existing project?
- audiocontext - have to remove audioContext or MediaElementAudioSourceNode
- c# - 是否可以使用对它一无所知的类的属性(甚至是类型和名称)?
- git - 列出拉取请求上的提交
- javascript - 如何使用 Laravel + React 检查上传文件的类型?
- javascript - 如何使用 Jest 测试 Node.js 脚本的“if (require.main === module)”部分中的代码?
- python-imaging-library - 从原始字节确定 PNG 的大小
- java-7 - Weblogic 托管服务器自动断开连接
- odoo - 如何覆盖 website_slides CSS?