在使用 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/