#33736: Unable to sqlmigrate on an AlterUniqueTogether migration
-------------------------------------+-------------------------------------
               Reporter:  Noelia     |          Owner:  nobody
  MarĂ­ Salvador                      |
                   Type:  Bug        |         Status:  new
              Component:             |        Version:  4.0
  Migrations                         |
               Severity:  Normal     |       Keywords:  sqlmigrate
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 Reproduced in Django 4.0.4.

 Given this model:
 {{{
 class TestModel(models.Model):
     name = models.CharField(max_length=200)
     age = models.IntegerField()
     colour = models.CharField(max_length=200)

     class Meta:
         unique_together = ["name", "age"]
 }}}

 When migrations are created and applied, a unique constraint is created on
 the database. Now, we want to alter the unique_together to:
 `unique_together = ["name", "colour"]`

 After running `makemigrations`, **without applying the new migration**, we
 are able to run `sqlmigrate`:
 {{{
 $ testproject python3 manage.py sqlmigrate core 0003
 BEGIN;
 --
 -- Alter unique_together for testmodel (1 constraint(s))
 --
 DROP INDEX "core_testmodel_name_age_530d7841_uniq";
 CREATE UNIQUE INDEX "core_testmodel_name_colour_5002f5dd_uniq" ON
 "core_testmodel" ("name", "colour");
 COMMIT;
 }}}

 However, after we successfully apply migrations as below, `sqlmigrate`
 fails.
 {{{
 $ testproject python3 manage.py migrate
 Operations to perform:
   Apply all migrations: admin, auth, contenttypes, core, sessions
 Running migrations:
   Applying core.0003_alter_testmodel_unique_together... OK
 }}}

 So when running `sqlmigrate` on the same migration it crashes and throws a
 `ValueError` because it's looking for the prior index:
 {{{
 $ testproject python3 manage.py sqlmigrate core 0003
 Traceback (most recent call last):
 ...
     raise ValueError(
 ValueError: Found wrong number (0) of constraints for core_testmodel(name,
 age)
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/33736>
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/01070180f0d60f5d-721af23e-3612-4a4e-86d8-5d675f74872b-000000%40eu-central-1.amazonses.com.

Reply via email to