#23906: "ValueError: Found wrong number (0) of constraints" when migrating backwards with from alter_unique_together migration. -------------------------------------+------------------------------------- Reporter: liavkoren | Owner: nobody Type: Bug | Status: new Component: Migrations | Version: 1.7 Severity: Normal | Resolution: Keywords: | Triage Stage: alter_unique_together migrations | Unreviewed constraints valueError | Needs documentation: 0 Has patch: 0 | Patch needs improvement: 0 Needs tests: 0 | UI/UX: 0 Easy pickings: 0 | -------------------------------------+------------------------------------- Changes (by carljm):
* needs_better_patch: => 0 * needs_tests: => 0 * needs_docs: => 0 Comment: I would guess that reproducing for purposes of writing a tests shouldn't be too hard with some raw SQL; it seems this is simply a matter of the order in which columns are listed in a constraint. The question is whether the suggested fix is actually correct. Does it break any existing tests? How does migrations currently handle it if you change the ordering of a `unique_together` without otherwise changing the constituent fields? I notice there is an `ORDER BY ordinal_position` in at least the PostgreSQL implementation of `get_constraints`, suggesting that the order of fields in a constraint is relevant. I think that's the basic question here: either a constraint with the same fields in a different order is semantically the same constraint (in which case your suggested fix seems right), or its semantically a different constraint (in which case the current behavior is correct, and you just have a mismatch between the state of your database and what migrations thinks is the state of your database, which is something you need to deal with locally). I don't actually know which of those is correct in terms of the underlying database semantics, though the fact that at least PG clearly tracks field ordering within a constraint suggests the latter. -- Ticket URL: <https://code.djangoproject.com/ticket/23906#comment:1> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/067.7bc18299d42b3a9f2c74328488178fa0%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.