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):
|
||||
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):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue