#25922 closed Bug (fixed)
migrate --fake-initial fails to handle ManyToManyFields created by AddField
Description ¶
Hello,
I've run into an issue with Django 1.9's new migrate --run-syncdb
command, which is supposed to replace syncdb
. It does not seem to be related to #25884.
Basically, the workflow syncdb => makemigrations => migrate --fake-initial is broken when ManyToManyFields are used in models. Using any other field (even FKs) work fine.
I found out that when running migrate --fake-initial
, MigrationExecutor.detect_soft_applied
could not find a matching column for the M2M field in the existing table, and therefore considers that the initial migration has not been implicitly applied. My understanding is that migrate --run-syncdb
failed to create that in the first place.
I have set up a minimal project to expose the issue:
My use case ? django-gm2m's test suite needs to initialize individual apps one by one and sync the db before each TestCase (and then run migration tests from that state).
Thanks in advance for looking into this, and thanks already for all the work put in Django so far!
Change History (7)
comment:1 by , 9 years ago
Severity: | Normal → Release blocker |
---|---|
Summary: | migrate --run-syncdb with ManyToManyFields on 1.9 → migrate --fake-initial fails to handle ManyToManyFields created by AddField |
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 9 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:3 by , 9 years ago
Has patch: | set |
---|
comment:4 by , 9 years ago
Triage Stage: | Accepted → Ready for checkin |
---|
PR