#24184: Migrate auto-fake behavior is not safe
--------------------------------------+------------------------
Reporter: carljm | Owner: nobody
Type: Bug | Status: new
Component: Migrations | Version: 1.7
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 |
--------------------------------------+------------------------
Currently, `manage.py migrate` will auto-fake-apply initial migrations if
it sees that the tables already exist, but it doesn't do any checking that
the schema of those tables actually matches the schema that the migration
would have created. And our documentation doesn't call out the importance
of making sure that your existing schema matches the models you used to
generate the initial migrations.
In an ideal world, we might keep the current behavior and automatically
verify a full schema match before auto-faking, but I doubt that's feasible
and in any case would be a major new feature.
Short of that, I think the unsafe auto-fake behavior should not be the
default; it should require a flag like `--fake-if-exists` or something
(needs bikeshedding) to turn it on. Wherever that flag is
documented/demonstrated in the docs (e.g. in the
[[https://docs.djangoproject.com/en/1.7/topics/migrations/#upgrading-from-
south upgrade-from-South docs]]), we should be very clear that it is only
safe to use if you are sure that your schema is properly up-to-date with
your models used to generate your initial migration.
(This ticket was motivated by #24178.)
--
Ticket URL: <https://code.djangoproject.com/ticket/24184>
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/049.c8bcd3c1444ee54506229105921f8b6d%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.