#29103: sqlmigrate produces byte literal in SQL for one-off empty string default
value in TextField, CharField
-------------------------------------+-------------------------------------
               Reporter:  qlimax     |          Owner:  nobody
                   Type:  Bug        |         Status:  new
              Component:             |        Version:  2.0
  Migrations                         |       Keywords:  sqlmigrate, byte,
               Severity:  Normal     |  default value, one-off
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  1
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 {{{
 $ python manage.py makemigrations myapp
 You are trying to add a non-nullable field 'text1' to mytable without a
 default; we can't do that (the database needs something to populate
 existing rows).
 Please select a fix:
  1) Provide a one-off default now (will be set on all existing rows with a
 null value for this column)
  2) Quit, and let me add a default in models.py
 Select an option: 1
 Please enter the default value now, as valid Python
 The datetime and django.utils.timezone modules are available, so you can
 do e.g. timezone.now
 Type 'exit' to exit this prompt
 >>> ''
 Migrations for 'myapp':
   myapp/migrations/0003_somechange.py
     - Add field text1 to mytable

 Done.

 $ python manage.py sqlmigrate myapp 0003_somechange
 BEGIN;
 --
 -- Add field text1 to mytable
 --
 ALTER TABLE `myapp_mytable` ADD COLUMN `text1` longtext NOT NULL;
 UPDATE `myapp_mytable` SET `text1` = b"''";
 COMMIT;

 $ cat myapp/migrations/0003_somechange.py
 # Generated by Django 2.0.2 on 2018-02-02 11:56

 from django.db import migrations, models


 class Migration(migrations.Migration):

     dependencies = [
         ('myapp', '0002_auto_20180202_1154'),
     ]

     operations = [
         migrations.AddField(
             model_name='mytable',
             name='text1',
             field=models.TextField(default=''),
             preserve_default=False,
         ),
     ]
 $ python --version
 Python 3.4.2
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/29103>
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 post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/049.cedb524213da2a53c3a3b694be4d6d29%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to