#13906: REPEATABLE READ (as used by default on MySQL) breaks atleast
QuerySet.get_or_create().
-------------------------------------+-------------------------------------
Reporter: | Owner: graham_king
sebastian_noack | Status: assigned
Type: | Component: Database layer
Cleanup/optimization | (models, ORM)
Milestone: | Severity: Normal
Version: SVN | Keywords: mysql transaction
Resolution: | isolation
Triage Stage: Accepted | Has patch: 1
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
-------------------------------------+-------------------------------------
Comment (by sebastian_noack):
In my opinion using transactions with MySQL is hazardous anyway, because
of MySQL's entire transaction management is poorly tested, [http://www.no-
ack.org/2011/05/broken-transaction-management-in-mysql.html as I have
recently proofed]. It only matters whether your application expects
MySQL's buggy behavior or not. And since any other RDBMS supported (and
well tested) by django is using READ COMMITTED, in my opinion django-based
applications will run more reliable on MySQL with READ COMMITTED.
Also note that there is no way to fix get_or_create for REPEATABLE READ,
because of it would require to commit the transaction after the attempt to
get the data and we can't do that if django's transaction management is in
manual state.
--
Ticket URL: <http://code.djangoproject.com/ticket/13906#comment:10>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en.