Opened 21 hours ago

Closed 9 hours ago

Last modified 4 hours ago

#36141 closed Bug (invalid)

After double squashing migrate command fails with InconsistentMigrationHistory

Reported by: Jacob Walls Owned by:
Component: Migrations Version: dev
Severity: Normal Keywords:
Cc: Georgi Yanchev Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

[main/6.0]
Make four migrations, migrate, squash the first two, then squash the first three: then migrate (or makemigrations --check) fails.

manage.py makemigrations myapp --empty
manage.py makemigrations myapp --empty
manage.py makemigrations myapp --empty
manage.py makemigrations myapp --empty
manage.py migrate
manage.py squashmigrations myapp 0001 0002
manage.py squashmigrations myapp 0001_initial_squashed 0003
manage.py migrate
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration myapp.0004_auto_20250126_1339 is applied before its dependency new.0001_initial_squashed_0002_auto_20250126_1339_squashed_0003_auto_20250126_1339 on database 'default'.

Other migration commands can be subbed for that last call and still produce the same error, e.g. makemigrations --check, which is likely in a CI setting.

Change History (3)

comment:1 by Sarah Boyce, 9 hours ago

Cc: Georgi Yanchev added

You should run migrate after each squash:

Once you’ve squashed your migration, you should then commit it alongside the migrations it replaces and distribute this change to all running instances of your application, making sure that they run migrate to store the change in their database.

Do you think this needs to be clearer in the docs?

comment:2 by Sarah Boyce, 9 hours ago

Resolution: needsinfo
Status: newclosed

Closing as "needsinfo", pending feedback from Jacob in case there's something I'm missing or a docs change might help.

comment:3 by Jacob Walls, 4 hours ago

Resolution: needsinfoinvalid
Severity: Release blockerNormal

Ah right thanks. Was trying to distill a more complicated failure and went a little too far. Docs read fine!

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