Opened 10 years ago
Last modified 3 months ago
#22997 assigned Bug
Migration fails when removing explicit primary key
Reported by: | Owned by: | bcail | |
---|---|---|---|
Component: | Migrations | Version: | 1.7 |
Severity: | Normal | Keywords: | migrate primary_key |
Cc: | bcail | Triage Stage: | Accepted |
Has patch: | yes | 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:
- create new model, set some field as primary key
- set up migrations with initial migration
- modify model so field is not primary key
- 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)
Change History (14)
by , 10 years ago
Attachment: | django_session_log.txt added |
---|
comment:1 by , 10 years ago
Component: | Database layer (models, ORM) → Migrations |
---|---|
Triage Stage: | Unreviewed → Accepted |
Type: | Uncategorized → Bug |
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 by , 10 years ago
Version: | 1.7-rc-1 → 1.7 |
---|
comment:4 by , 10 months ago
Cc: | added |
---|---|
Has patch: | set |
Owner: | changed from | to
Status: | new → assigned |
I opened a PR for one of the problems - where a default is added to an AutoField.
comment:5 by , 10 months ago
I updated the PR to handle the other issue as well - to generate altered fields before added fields.
comment:6 by , 8 months ago
Patch needs improvement: | set |
---|
comment:7 by , 8 months ago
Patch needs improvement: | unset |
---|
comment:8 by , 8 months ago
Summary: | Migration fails when removing explicit primary key (Postgres) → Migration fails when removing explicit primary key |
---|
(I can replicate also on SQLite so removing Postgres reference as it does not only relate to Postgres)
comment:9 by , 8 months ago
Summary: | Migration fails when removing explicit primary key → Migration fails when removing explicit primary key (Postgres) |
---|
(Ah perhaps the fix as described is only related to Postgres? Can confirm the same migrations and prompting happen on other databases).
comment:10 by , 8 months ago
Patch needs improvement: | set |
---|---|
Summary: | Migration fails when removing explicit primary key (Postgres) → Migration fails when removing explicit primary key |
comment:12 by , 3 months ago
Patch needs improvement: | unset |
---|
Terminal session log demonstrating issue in 22997.