Fixed get_or_create test case for Oracle by re-raising the more specific IntegrityError for "ORA-01400: Cannot insert NULL into [table.col]"
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8545 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
78d13fb1c2
commit
1aa4889808
|
@ -354,7 +354,13 @@ class FormatStylePlaceholderCursor(Database.Cursor):
|
||||||
query = query[:-1]
|
query = query[:-1]
|
||||||
query = smart_str(query, self.charset) % tuple(args)
|
query = smart_str(query, self.charset) % tuple(args)
|
||||||
self._guess_input_sizes([params])
|
self._guess_input_sizes([params])
|
||||||
return Database.Cursor.execute(self, query, self._param_generator(params))
|
try:
|
||||||
|
return Database.Cursor.execute(self, query, self._param_generator(params))
|
||||||
|
except DatabaseError, e:
|
||||||
|
# cx_Oracle <= 4.4.0 wrongly raises a DatabaseError for ORA-01400.
|
||||||
|
if e.message.code == 1400 and type(e) != IntegrityError:
|
||||||
|
e = IntegrityError(e.message)
|
||||||
|
raise e
|
||||||
|
|
||||||
def executemany(self, query, params=None):
|
def executemany(self, query, params=None):
|
||||||
try:
|
try:
|
||||||
|
@ -371,7 +377,13 @@ class FormatStylePlaceholderCursor(Database.Cursor):
|
||||||
query = smart_str(query, self.charset) % tuple(args)
|
query = smart_str(query, self.charset) % tuple(args)
|
||||||
formatted = [self._format_params(i) for i in params]
|
formatted = [self._format_params(i) for i in params]
|
||||||
self._guess_input_sizes(formatted)
|
self._guess_input_sizes(formatted)
|
||||||
return Database.Cursor.executemany(self, query, [self._param_generator(p) for p in formatted])
|
try:
|
||||||
|
return Database.Cursor.executemany(self, query, [self._param_generator(p) for p in formatted])
|
||||||
|
except DatabaseError, e:
|
||||||
|
# cx_Oracle <= 4.4.0 wrongly raises a DatabaseError for ORA-01400.
|
||||||
|
if e.message.code == 1400 and type(e) != IntegrityError:
|
||||||
|
e = IntegrityError(e.message)
|
||||||
|
raise e
|
||||||
|
|
||||||
def fetchone(self):
|
def fetchone(self):
|
||||||
row = Database.Cursor.fetchone(self)
|
row = Database.Cursor.fetchone(self)
|
||||||
|
|
Loading…
Reference in New Issue