summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Boersma <matt@sprout.org>2008-08-25 17:20:28 +0000
committerMatt Boersma <matt@sprout.org>2008-08-25 17:20:28 +0000
commit1aa48898085ea16915877cc139e238a74e3f554b (patch)
tree02ba410e2a7960cdf9016b5e5c34bcb00d009573
parent78d13fb1c226b7f2d28ebbda7b91c86e8559512d (diff)
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
-rw-r--r--django/db/backends/oracle/base.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py
index b8bc6d00d5..ab86076214 100644
--- a/django/db/backends/oracle/base.py
+++ b/django/db/backends/oracle/base.py
@@ -354,7 +354,13 @@ class FormatStylePlaceholderCursor(Database.Cursor):
query = query[:-1]
query = smart_str(query, self.charset) % tuple(args)
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):
try:
@@ -371,7 +377,13 @@ class FormatStylePlaceholderCursor(Database.Cursor):
query = smart_str(query, self.charset) % tuple(args)
formatted = [self._format_params(i) for i in params]
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):
row = Database.Cursor.fetchone(self)