#35416: Removing a primary_key field causes a migration crash -----------------------------------------+------------------------ Reporter: Sarah Boyce | Owner: nobody Type: Uncategorized | Status: new Component: Migrations | Version: dev Severity: Normal | Keywords: Triage Stage: Unreviewed | Has patch: 0 Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 0 UI/UX: 0 | -----------------------------------------+------------------------ [I am using SQLite]
Create a model with a primary_key field and makemigrations and migrate {{{#!python from django.db import models class MySimpleModel(models.Model): some_pk = models.IntegerField(primary_key=True) }}} Then remove the field and makemigrations {{{#!python class MySimpleModel(models.Model): pass }}} This prompts you to supply a default because {{{ It is impossible to add a non-nullable field 'id' to mysimplemodel without specifying a default. }}} If you supply a default, you get a migration like this: {{{#!python from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('app3', '0001_initial'), ] operations = [ migrations.RemoveField( model_name='mysimplemodel', name='some_pk', ), migrations.AddField( model_name='mysimplemodel', name='id', field=models.BigAutoField(auto_created=True, default=1, primary_key=True, serialize=False, verbose_name='ID'), preserve_default=False, ), ] }}} This crashes when you migrate with: {{{ django.db.utils.OperationalError: near ")": syntax error }}} But if you remove the provided default from the migration and switch the order so that the field is added before the previous primary_key field is removed, the migration can be applied. This is very similar to #22997 and certainly related (they didn't remove the field but instead altered the field to no longer be a primary_key in that ticket). I am not sure whether to class this as a duplicate and require a fix as part of #22997 - happy to hear opinions here. -- Ticket URL: <https://code.djangoproject.com/ticket/35416> 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 view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/0107018f2ee72eba-ad63b6e2-a68d-4e45-a6b0-822d487acf71-000000%40eu-central-1.amazonses.com.