#13906: REPEATABLE READ (as used by default on MySQL) breaks atleast
QuerySet.get_or_create().
-------------------------------------+-------------------------------------
Reporter: | Owner:
sebastian_noack | Status: new
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 TomaszZielinski):
Replying to [comment:10 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.
I think that you are right about this and MySQLdb should also work in READ
COMMITED mode by default, or at least it should be strongly advised in the
documentation.
--
Ticket URL: <http://code.djangoproject.com/ticket/13906#comment:13>
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.