#29182: SQLite database migration breaks ForeignKey constraint, leaving
<table_name>__old in db schema
----------------------------------+------------------------------------
     Reporter:  ezaquarii         |                    Owner:  nobody
         Type:  Uncategorized     |                   Status:  new
    Component:  Migrations        |                  Version:  2.0
     Severity:  Normal            |               Resolution:
     Keywords:  sqlite migration  |             Triage Stage:  Accepted
    Has patch:  0                 |      Needs documentation:  0
  Needs tests:  0                 |  Patch needs improvement:  0
Easy pickings:  0                 |                    UI/UX:  0
----------------------------------+------------------------------------
Changes (by Simon Charette):

 * cc: Simon Charette (added)
 * stage:  Unreviewed => Accepted


Comment:

 Hey ezaquarii, thank you for your great report.

 You can get a bit of context about why all the SQLite constraint
 workarounds are required in #28849 but in this case I suspect odd things
 happen because, as you might know, savepoints are used in nested
 `atomic()` blocks.

 The migration executor was not designed to be used within a transaction as
 it does some pretty intense transaction management itself so I'm accepting
 on the basis that we should do a better job at raising an error in this
 case. The fact that this doesn't happen when `./manage.py migrate` is
 called directly is a good indicator that other weird things might be
 happening under the hood because this case is completely untested by the
 suite right now. For example, do the backend that we know transactional
 DDL support for all behave the same way with regards to savepoints?

 I guess you were trying to come up with some kind of deploying script that
 either fails or succeeds to apply multiple migrations?

-- 
Ticket URL: <https://code.djangoproject.com/ticket/29182#comment:6>
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/067.9ad793cd54be316951e7a2cfc6292102%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to