#23474: Schema migrations can inadvertently destroy data
---------------------------------+------------------------------------
     Reporter:  Naddiseo         |                    Owner:  nobody
         Type:  Bug              |                   Status:  new
    Component:  Migrations       |                  Version:  1.7
     Severity:  Release blocker  |               Resolution:
     Keywords:                   |             Triage Stage:  Accepted
    Has patch:  0                |      Needs documentation:  0
  Needs tests:  0                |  Patch needs improvement:  0
Easy pickings:  0                |                    UI/UX:  0
---------------------------------+------------------------------------

Comment (by carljm):

 I think akaariai's idea of requiring more explicit intent to rollback
 migrations is worth consideration, but entirely apart from that it still
 seems to me that the previous behaviour was bad and this PR made it
 better.

 In #23410 I see that Andrew stated that the previous behavior was
 intentional, to wit: "the contract is that backwards migrations roll back
 to just after the application of the named migration, and all its
 dependencies are unapplied."

 I don't see any clear reasoning provided there as to _why_ that contract
 is more desirable than the alternatives. Based on the following paragraph,
 it _seems_ that the reasoning is that a "graph node specification" such as
 "appname 0001" should always precisely specify a single state, regardless
 of whether you are rolling backwards or forwards to that state.

 I don't find that convincing. Although I see the purity argument, I think
 that in practice a much more useful (and intuitive, and less likely to
 result in data loss) contract is that "migrate appname 0001" will ensure
 that appname-0001 is applied and appname-0002 is not applied, and will
 otherwise apply or unapply as few migrations as possible.

 I also don't see a backwards-compatibility issue with switching to that
 contract in 1.7.1. This is code that runs interactively and tells you
 exactly what it is doing as it is doing it.

--
Ticket URL: <https://code.djangoproject.com/ticket/23474#comment:11>
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 django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/066.f66d8825738d6fe3603e1fbb90797703%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to