django - 在 Django 迁移期间收到 "ValueError: Found wrong number (0) of constraints for ..."

标签 django django-migrations

在使用 Django 1.7 迁移时,我遇到了一个在开发中有效但在生产中无效的迁移:
ValueError: Found wrong number (0) of constraints for table_name(a, b, c, d)
这是由 AlterUniqueTogether 引起的规则:

   migrations.AlterUniqueTogether(
         name='table_name',
         unique_together=set([('a', 'b')]),
   )

阅读 Django 错误数据库中的错误等似乎是关于现有的 unique_together在与迁移历史不匹配的数据库中。

如何解决此错误并完成迁移?

最佳答案

(Postgres 和 MySQL 答案)

如果您查看实际表(使用 \d table_name )并查看索引,您将找到唯一约束的条目。这就是 Django 试图找到并删除的内容。但它找不到完全匹配的。

例如,

"table_name_...6cf2a9c6e98cbd0d_uniq" UNIQUE CONSTRAINT, btree (d, a, b, c)

在我的情况下,键的顺序 (d, a, b, c)与它希望删除的约束不匹配 (a, b, c, d) .

我回到了我的迁移历史并更改了原来的AlterUniqueTogether以匹配数据库中的实际订单。

然后迁移成功完成。

关于django - 在 Django 迁移期间收到 "ValueError: Found wrong number (0) of constraints for ...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41623515/

相关文章:

python - 重命名响应字段 django rest framework 序列化程序

Django 密码重置。不发送邮件

python - 括号 URL 调度程序 Django?

django - 您如何在非主分支上干净地维护 django 迁移?

python - 在 vagrant 的 Django 应用程序中创建迁移文件夹的权限被拒绝

python - 使用 Daphne 在 DEBUG 模式下运行 Django

python - 为不同的环境(登台、生产)配置 Sentry

django-migrations - Django 1.7 迁移找不到应用程序

django - 恢复 Django 1.7 RemoveField 迁移

python - 在 Django 中删除外键约束