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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~