From e81e319f15f448d550d7e30b204d9490a9999b99 Mon Sep 17 00:00:00 2001
From: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Sun, 5 May 2013 19:44:43 +0200
Subject: [PATCH] Fixed #20025 -- Pointed to a MySQLdb fork for Python 3.

Made a few minor compatibility adjustments.
---
 django/db/backends/mysql/base.py       |  3 ++-
 django/db/backends/mysql/validation.py |  3 ++-
 docs/ref/databases.txt                 | 13 +++++++++++--
 3 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py
index d9f66ad5ef..945d737354 100644
--- a/django/db/backends/mysql/base.py
+++ b/django/db/backends/mysql/base.py
@@ -405,8 +405,9 @@ class DatabaseWrapper(BaseDatabaseWrapper):
         kwargs = {
             'conv': django_conversions,
             'charset': 'utf8',
-            'use_unicode': True,
         }
+        if not six.PY3:
+            kwargs['use_unicode'] = True
         settings_dict = self.settings_dict
         if settings_dict['USER']:
             kwargs['user'] = settings_dict['USER']
diff --git a/django/db/backends/mysql/validation.py b/django/db/backends/mysql/validation.py
index de7474d1e5..2ce957cce7 100644
--- a/django/db/backends/mysql/validation.py
+++ b/django/db/backends/mysql/validation.py
@@ -10,6 +10,7 @@ class DatabaseValidation(BaseDatabaseValidation):
         from django.db import models
         varchar_fields = (models.CharField, models.CommaSeparatedIntegerField,
                 models.SlugField)
-        if isinstance(f, varchar_fields) and f.max_length > 255 and f.unique:
+        if (isinstance(f, varchar_fields) and f.unique
+                and (f.max_length is None or int(f.max_length) > 255)):
             msg = '"%(name)s": %(cls)s cannot have a "max_length" greater than 255 when using "unique=True".'
             errors.add(opts, msg % {'name': f.name, 'cls': f.__class__.__name__})
diff --git a/docs/ref/databases.txt b/docs/ref/databases.txt
index 35f0cc6b41..f28079ae33 100644
--- a/docs/ref/databases.txt
+++ b/docs/ref/databases.txt
@@ -252,6 +252,15 @@ required for full MySQL support in Django.
 
 .. _MySQLdb: http://sourceforge.net/projects/mysql-python
 
+Python 3
+--------
+
+At the time of writing, the latest release of MySQLdb (1.2.4) doesn't support
+Python 3. In order to use MySQL under Python 3, you'll have to install an
+unofficial fork, such as `MySQL-for-Python-3`_.
+
+.. _MySQL-for-Python-3: https://github.com/clelland/MySQL-for-Python-3
+
 Creating your database
 ----------------------
 
@@ -361,8 +370,8 @@ Here's a sample configuration which uses a MySQL option file::
     default-character-set = utf8
 
 Several other MySQLdb connection options may be useful, such as ``ssl``,
-``use_unicode``, ``init_command``, and ``sql_mode``. Consult the
-`MySQLdb documentation`_ for more details.
+``init_command``, and ``sql_mode``. Consult the `MySQLdb documentation`_ for
+more details.
 
 .. _MySQL option file: http://dev.mysql.com/doc/refman/5.0/en/option-files.html
 .. _MySQLdb documentation: http://mysql-python.sourceforge.net/