#35047: Wrong sql query for migration
--------------------------------------+----------------------------
               Reporter:  mgoldenbe   |          Owner:  nobody
                   Type:  Bug         |         Status:  new
              Component:  Migrations  |        Version:  3.2
               Severity:  Normal      |       Keywords:  sqlmigrate
           Triage Stage:  Unreviewed  |      Has patch:  0
    Needs documentation:  0           |    Needs tests:  0
Patch needs improvement:  0           |  Easy pickings:  0
                  UI/UX:  0           |
--------------------------------------+----------------------------
 I had the model:

 ```py
 class UserInfo(models.Model):
     user = models.ForeignKey(User, related_name='user_info',
 on_delete=CASCADE)
     picture = models.URLField(null = True, blank = True)
     paying = models.BooleanField(default = False)
     credits = models.DecimalField(max_digits=6, decimal_places=2)
     expiry = models.DateTimeField()
     usd_per_credit = models.FloatField(null = True, blank = True)
     content_count = models.IntegerField(default=0)
     suspended = models.BooleanField(default = False)
     suspended_request = models.TextField(null = True, blank = True)
     suspended_timestamp = models.DateTimeField(null = True, blank = True)

     def __str__(self): return str(self.user)
 ```

 Then I changed the `usd_per_credit` field to be
 ```
     usd_per_credit = models.FloatField(default = 0.00)
 ```

 After running `makemigrations` and `migrate`, I ran `sqlmigrate` and got
 the following:
 ```sql
 BEGIN;
 --
 -- Alter field usd_per_credit on userinfo
 --
 ALTER TABLE "accounts_userinfo" ALTER COLUMN "usd_per_credit" SET DEFAULT
 0.0;
 UPDATE "accounts_userinfo" SET "usd_per_credit" = 0.0 WHERE
 "usd_per_credit" IS NULL;
 ALTER TABLE "accounts_userinfo" ALTER COLUMN "usd_per_credit" SET NOT
 NULL;
 ALTER TABLE "accounts_userinfo" ALTER COLUMN "usd_per_credit" DROP
 DEFAULT;
 COMMIT;
 ```

 The last line before COMMIT is wrong. It drops the default value which was
 correctly set.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/35047>
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/0107018c7caae4df-f2b96556-1b32-47b8-a84d-73b1470a9a58-000000%40eu-central-1.amazonses.com.

Reply via email to