如何使用南方删除唯一约束?

时间:2013-12-24 21:32:41

标签: mysql django django-south

我正在尝试删除在两个模型字段中定义的unique约束(使用South 0.8.2)。

我需要离开:

billing_id = models.PositiveIntegerField(_("Billing id"), unique=True, blank=True, null=True)
tax_code = models.CharField(_("Tax code"), max_length=10, unique=True, blank=True, null=True)

要:

billing_id = models.PositiveIntegerField(_("Billing id"), blank=True, null=True)
tax_code = models.CharField(_("Tax code"), max_length=10, blank=True, default='')

但是,当我运行迁移时,我收到以下错误:

Warning: Data truncated for column 'tax_code' at row 1

如果我再次运行它,那么我得到:

ValueError: Cannot find a UNIQUE constraint on table startups_startup, columns ['billing_id']

达到这一点,我必须手动重新创建唯一索引。

桌面上有现有记录,我正在使用MySQL。

这样做有“简单方法”吗?

1 个答案:

答案 0 :(得分:1)

为了解决这个问题,我做了以下几点:

  1. 删除唯一约束,运行schemamigration并迁移它。
  2. tax_code移除null = True,运行schemamigration并再次迁移。
  3. 步骤2)显示Truncated data警告,但运行正常。重新迁移它不会显示任何错误,所以一切似乎都很好!

    希望这也有助于其他人!