diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py
index 02bdda199b..830808b9d3 100644
--- a/django/db/backends/mysql/base.py
+++ b/django/db/backends/mysql/base.py
@@ -105,7 +105,7 @@ class CursorWrapper(object):
             # misclassified and Django would prefer the more logical place.
             if e[0] in self.codes_for_integrityerror:
                 raise utils.IntegrityError, utils.IntegrityError(*tuple(e)), sys.exc_info()[2]
-            raise
+            raise utils.DatabaseError, utils.DatabaseError(*tuple(e)), sys.exc_info()[2]
         except Database.DatabaseError, e:
             raise utils.DatabaseError, utils.DatabaseError(*tuple(e)), sys.exc_info()[2]
 
diff --git a/docs/releases/1.4.txt b/docs/releases/1.4.txt
index 9f9ce7fb59..d4c723fea5 100644
--- a/docs/releases/1.4.txt
+++ b/docs/releases/1.4.txt
@@ -745,6 +745,15 @@ datetimes are now stored without time-zone information in SQLite. When
 :setting:`USE_TZ` is ``False``, if you attempt to save an aware datetime
 object, Django raises an exception.
 
+``MySQLdb``-specific exceptions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The MySQL backend could raise :class:`MySQLdb.OperationalError`
+when a query triggered an exception. This bug was fixed and
+:class:`django.db.utils.DatabaseError` is now raised instead.
+If you were testing for :class:`MySQLdb.OperationalError`,
+you must update your ``except`` clauses.
+
 Database connection's thread-locality
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~