summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2017-01-25 10:16:10 -0500
committerTim Graham <timograham@gmail.com>2017-01-25 10:31:24 -0500
commitec0af19f4c9c845ff1ce376c83853ae9345205ca (patch)
treedf2618f253d7812bc0c5381ad67c2ca87e79d94f /docs
parentc94cb4f86541d8f76ee27652e214fedd0c0920fe (diff)
[1.11.x] Bumped MySQLdb version requirement to 1.2.3.
Older versions don't support Python 2.7. Partial backport of 2d96c027f5eb32c2c09bd57df2240ae1d343b98e from master
Diffstat (limited to 'docs')
-rw-r--r--docs/ref/databases.txt57
-rw-r--r--docs/ref/models/fields.txt14
2 files changed, 9 insertions, 62 deletions
diff --git a/docs/ref/databases.txt b/docs/ref/databases.txt
index 0c2465a9af..6e3694695e 100644
--- a/docs/ref/databases.txt
+++ b/docs/ref/databases.txt
@@ -301,7 +301,7 @@ MySQL Connector/Python includes `its own`_.
MySQLdb
~~~~~~~
-Django requires MySQLdb version 1.2.1p2 or later.
+Django requires MySQLdb version 1.2.3 or later.
At the time of writing, the latest release of MySQLdb (1.2.5) doesn't support
Python 3. In order to use MySQLdb under Python 3, you'll have to install
@@ -319,9 +319,8 @@ Python 3. In order to use MySQLdb under Python 3, you'll have to install
mysqlclient
~~~~~~~~~~~
-Django requires `mysqlclient`_ 1.3.3 or later. Note that Python 3.2 is not
-supported. Except for the Python 3.3+ support, mysqlclient should mostly behave
-the same as MySQLDB.
+Django requires `mysqlclient`_ 1.3.3 or later. mysqlclient should mostly behave
+the same as MySQLdb.
MySQL Connector/Python
~~~~~~~~~~~~~~~~~~~~~~
@@ -374,46 +373,9 @@ comparisons being done in a *case-insensitive* manner. That is, ``"Fred"`` and
``"freD"`` are considered equal at the database level. If you have a unique
constraint on a field, it would be illegal to try to insert both ``"aa"`` and
``"AA"`` into the same column, since they compare as equal (and, hence,
-non-unique) with the default collation.
-
-In many cases, this default will not be a problem. However, if you really want
-case-sensitive comparisons on a particular column or table, you would change
-the column or table to use the ``utf8_bin`` collation. The main thing to be
-aware of in this case is that if you are using MySQLdb 1.2.2, the database
-backend in Django will then return bytestrings (instead of unicode strings) for
-any character fields it receive from the database. This is a strong variation
-from Django's normal practice of *always* returning unicode strings. It is up
-to you, the developer, to handle the fact that you will receive bytestrings if
-you configure your table(s) to use ``utf8_bin`` collation. Django itself should
-mostly work smoothly with such columns (except for the ``contrib.sessions``
-``Session`` and ``contrib.admin`` ``LogEntry`` tables described below), but
-your code must be prepared to call ``django.utils.encoding.force_text()`` at
-times if it really wants to work with consistent data -- Django will not do
-this for you (the database backend layer and the model population layer are
-separated internally so the database layer doesn't know it needs to make this
-conversion in this one particular case).
-
-If you're using MySQLdb 1.2.1p2, Django's standard
-:class:`~django.db.models.CharField` class will return unicode strings even
-with ``utf8_bin`` collation. However, :class:`~django.db.models.TextField`
-fields will be returned as an ``array.array`` instance (from Python's standard
-``array`` module). There isn't a lot Django can do about that, since, again,
-the information needed to make the necessary conversions isn't available when
-the data is read in from the database. This problem was `fixed in MySQLdb
-1.2.2`_, so if you want to use :class:`~django.db.models.TextField` with
-``utf8_bin`` collation, upgrading to version 1.2.2 and then dealing with the
-bytestrings (which shouldn't be too difficult) as described above is the
-recommended solution.
-
-Should you decide to use ``utf8_bin`` collation for some of your tables with
-MySQLdb 1.2.1p2 or 1.2.2, you should still use ``utf8_general_ci``
-(the default) collation for the ``django.contrib.sessions.models.Session``
-table (usually called ``django_session``) and the
-:class:`django.contrib.admin.models.LogEntry` table (usually called
-``django_admin_log``). Those are the two standard tables that use
-:class:`~django.db.models.TextField` internally.
-
-.. _fixed in MySQLdb 1.2.2: http://sourceforge.net/tracker/index.php?func=detail&aid=1495765&group_id=22307&atid=374932
+non-unique) with the default collation. If you want case-sensitive comparisons
+on a particular column or table, change the column or table to use the
+``utf8_bin`` collation.
Please note that according to `MySQL Unicode Character Sets`_, comparisons for
the ``utf8_general_ci`` collation are faster, but slightly less correct, than
@@ -467,12 +429,11 @@ Here's a sample configuration which uses a MySQL option file::
password = PASSWORD
default-character-set = utf8
-Several other MySQLdb connection options may be useful, such as ``ssl``,
-``init_command``, and ``sql_mode``. Consult the `MySQLdb documentation`_ for
-more details.
+Several other `MySQLdb connection options`_ may be useful, such as ``ssl``,
+``init_command``, and ``sql_mode``.
.. _MySQL option file: https://dev.mysql.com/doc/refman/en/option-files.html
-.. _MySQLdb documentation: http://mysql-python.sourceforge.net/
+.. _MySQLdb connection options: https://mysqlclient.readthedocs.io/en/latest/user_guide.html#functions-and-attributes
.. _mysql-sql-mode:
diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt
index ba01f5f0bc..09f1618275 100644
--- a/docs/ref/models/fields.txt
+++ b/docs/ref/models/fields.txt
@@ -473,13 +473,6 @@ The default form widget for this field is a :class:`~django.forms.TextInput`.
``max_length`` for some backends. Refer to the :doc:`database backend
notes </ref/databases>` for details.
-.. admonition:: MySQL users
-
- If you are using this field with MySQLdb 1.2.2 and the ``utf8_bin``
- collation (which is *not* the default), there are some issues to be aware
- of. Refer to the :ref:`MySQL database notes <mysql-collation>` for
- details.
-
``CommaSeparatedIntegerField``
------------------------------
@@ -1097,13 +1090,6 @@ If you specify a ``max_length`` attribute, it will be reflected in the
However it is not enforced at the model or database level. Use a
:class:`CharField` for that.
-.. admonition:: MySQL users
-
- If you are using this field with MySQLdb 1.2.1p2 and the ``utf8_bin``
- collation (which is *not* the default), there are some issues to be aware
- of. Refer to the :ref:`MySQL database notes <mysql-collation>` for
- details.
-
``TimeField``
-------------