Opened 9 years ago
Last modified 9 years ago
#26535 closed Uncategorized
Possible bug - when migrating and removing unique constraint. — at Initial Version
Reported by: | jenlu | Owned by: | nobody |
---|---|---|---|
Component: | Migrations | Version: | 1.9 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Possible bug - when migrating and removing unique constraint.
Postgres 9.4.1 / 9.5.7 + Django 1.9.5 + psycopg 2.6.1
——
My setup is models/database representing sports events, and with competitors in different events.
Each competitor in different sports has for their model/class:
class Meta:
unique_together = ('event', 'number')
i.e. ensure a unique starting number in an event, now we are relaxing (removing this constraint)
this but having issues when migrating.
The above is represented in postgress as a UNIQUE constraint
and in all models.py the above constraint is as-above — but in pg it is represented as
(i) UNIQUE (event_id, number)
and sometimes as...
(ii) UNIQUE (number, event_id)
…and now when doing migration - for all tables where it is represented as (i) everything
goes well, but in tables where (ii) the following error:
File "/Users/XXX/.virtualenvs/ssi195_2711/lib/python2.7/site-packages/django/db/migrations/migration.py", line 123, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "/Users/XXX/.virtualenvs/ssi195_2711/lib/python2.7/site-packages/django/db/migrations/operations/models.py", line 359, in database_forwards
getattr(new_model._meta, self.option_name, set()),
File "/Users/XXX/.virtualenvs/ssi195_2711/lib/python2.7/site-packages/django/db/backends/base/schema.py", line 318, in alter_unique_together
self._delete_composed_index(model, fields, {'unique': True}, self.sql_delete_unique)
File "/Users/XXX/.virtualenvs/ssi195_2711/lib/python2.7/site-packages/django/db/backends/base/schema.py", line 347, in _delete_composed_index
", ".join(columns),
ValueError: Found wrong number (0) of constraints for match_ppc_ppccompetitor(event_id, number)
So seems to need to do some migrations manually and no biggie - but yet strange and unsure if Django or pg issue….
/ Jens