Fixed #17601 -- expose underlying db exceptions under py2
Use __cause__ to expose the underlying database exceptions even under python 2.
This commit is contained in:
parent
4f4e9243e4
commit
5448555785
|
@ -91,7 +91,6 @@ class DatabaseErrorWrapper(object):
|
|||
except AttributeError:
|
||||
args = (exc_value,)
|
||||
dj_exc_value = dj_exc_type(*args)
|
||||
if six.PY3:
|
||||
dj_exc_value.__cause__ = exc_value
|
||||
# Only set the 'errors_occurred' flag for errors that may make
|
||||
# the connection unusable.
|
||||
|
|
|
@ -152,10 +152,16 @@ The Django wrappers for database exceptions behave exactly the same as
|
|||
the underlying database exceptions. See :pep:`249`, the Python Database API
|
||||
Specification v2.0, for further information.
|
||||
|
||||
As per :pep:`3134`, a ``__cause__`` attribute is set with the original
|
||||
(underlying) database exception, allowing access to any additional
|
||||
information provided. (Note that this attribute is available under
|
||||
both Python 2 and Python 3, although :pep:`3134` normally only applies
|
||||
to Python 3.)
|
||||
|
||||
.. versionchanged:: 1.6
|
||||
|
||||
Previous version of Django only wrapped ``DatabaseError`` and
|
||||
``IntegrityError``.
|
||||
``IntegrityError``, and did not provide ``__cause__``.
|
||||
|
||||
.. exception:: models.ProtectedError
|
||||
|
||||
|
|
Loading…
Reference in New Issue