1
0
mirror of https://github.com/django/django.git synced 2025-10-24 06:06:09 +00:00

Fixed #27683 -- Made MySQL default to the read committed isolation level.

Thanks Shai Berger for test help and Adam Johnson for review.
This commit is contained in:
Tim Graham
2017-02-01 15:34:17 -05:00
committed by GitHub
parent c4e18bb1ce
commit 924af638e4
5 changed files with 40 additions and 13 deletions

View File

@@ -449,8 +449,14 @@ this entry are the four standard isolation levels:
* ``'serializable'``
or ``None`` to use the server's configured isolation level. However, Django
works best with read committed rather than MySQL's default, repeatable read.
Data loss is possible with repeatable read.
works best with and defaults to read committed rather than MySQL's default,
repeatable read. Data loss is possible with repeatable read.
.. versionchanged:: 2.0
In older versions, the MySQL database backend defaults to using the
database's isolation level (which defaults to repeatable read) rather
than read committed.
.. _transaction isolation level: https://dev.mysql.com/doc/refman/en/innodb-transaction-isolation-levels.html

View File

@@ -227,6 +227,15 @@ The end of upstream support for Oracle 11.2 is Dec. 2020. Django 1.11 will be
supported until April 2020 which almost reaches this date. Django 2.0
officially supports Oracle 12.1+.
Default MySQL isolation level is read committed
-----------------------------------------------
MySQL's default isolation level, repeatable read, may cause data loss in
typical Django usage. To prevent that and for consistency with other databases,
the default isolation level is now read committed. You can use the
:setting:`DATABASES` setting to :ref:`use a different isolation level
<mysql-isolation-level>`, if needed.
:attr:`AbstractUser.last_name <django.contrib.auth.models.User.last_name>` ``max_length`` increased to 150
----------------------------------------------------------------------------------------------------------