Opened 2 years ago

Last modified 21 months ago

#22997 new Bug

Migration fails when removing explicit primary key (Postgres)

Reported by: a.lloyd.flanagan@… Owned by: nobody
Component: Migrations Version: 1.7
Severity: Normal Keywords: migrate primary_key
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

The automatic migration created by migrate fails when

  • a table was created with a field where "primary_key=True" is specified.
  • data is added to the table
  • The model is modified so that no field is primary key, and Django auto-creates "id" field.

To reproduce the problem:

  1. create new model, set some field as primary key
  2. set up migrations with initial migration
  3. modify model so field is not primary key
  4. generate migration

Problems:

  • will ask for default value for auto-generated ID field
  • will try to create id field as primary key, before modifying existing key

Manual Fix:

  • remove default from models.AutoField() call
  • reverse order of operations so AlterField() comes before AddField()

I'm attaching a session log with a complete transcript.

Attachments (1)

django_session_log.txt (7.5 KB) - added by a.lloyd.flanagan@… 2 years ago.
Terminal session log demonstrating issue in 22997.

Download all attachments as: .zip

Change History (4)

Changed 2 years ago by a.lloyd.flanagan@…

Attachment: django_session_log.txt added

Terminal session log demonstrating issue in 22997.

comment:1 Changed 2 years ago by Tim Graham

Component: Database layer (models, ORM)Migrations
Needs documentation: unset
Needs tests: unset
Patch needs improvement: unset
Triage Stage: UnreviewedAccepted
Type: UncategorizedBug

I guess it's probably too much of an edge case to be a blocker for 1.7, but would be nice if it "just worked".

comment:2 Changed 22 months ago by Tim Graham

Version: 1.7-rc-11.7

comment:3 Changed 21 months ago by Tim Graham

#24030 seems related.

Note: See TracTickets for help on using tickets.
Back to Top