Implemented changes made in r14320 in the Oracle backend. Thanks Russell for reviewing the proposed fix.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14510 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
cab434e011
commit
f91b41fe33
|
@ -399,6 +399,28 @@ class DatabaseWrapper(BaseDatabaseWrapper):
|
||||||
def _savepoint_commit(self, sid):
|
def _savepoint_commit(self, sid):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def _commit(self):
|
||||||
|
if self.connection is not None:
|
||||||
|
try:
|
||||||
|
return self.connection.commit()
|
||||||
|
except Database.IntegrityError, e:
|
||||||
|
# In case cx_Oracle implements (now or in a future version)
|
||||||
|
# raising this specific exception
|
||||||
|
raise utils.IntegrityError, utils.IntegrityError(*tuple(e)), sys.exc_info()[2]
|
||||||
|
except Database.DatabaseError, e:
|
||||||
|
# cx_Oracle 5.0.4 raises a cx_Oracle.DatabaseError exception
|
||||||
|
# with the following attributes and values:
|
||||||
|
# code = 2091
|
||||||
|
# message = 'ORA-02091: transaction rolled back
|
||||||
|
# 'ORA-02291: integrity constraint (TEST_DJANGOTEST.SYS
|
||||||
|
# _C00102056) violated - parent key not found'
|
||||||
|
# We convert that particular case to our IntegrityError exception
|
||||||
|
x = e.args[0]
|
||||||
|
if hasattr(x, 'code') and hasattr(x, 'message') \
|
||||||
|
and x.code == 2091 and 'ORA-02291' in x.message:
|
||||||
|
raise utils.IntegrityError, utils.IntegrityError(*tuple(e)), sys.exc_info()[2]
|
||||||
|
raise utils.DatabaseError, utils.DatabaseError(*tuple(e)), sys.exc_info()[2]
|
||||||
|
|
||||||
|
|
||||||
class OracleParam(object):
|
class OracleParam(object):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue