From ca187fea88b626508e125e0843c991fe63f8ed95 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Sat, 7 Jan 2012 19:53:20 +0000 Subject: [PATCH] Fixed #17513 -- Prevented the MySQL backend from leaking MySQLdb-specific exceptions. Thanks Claude Paroz. git-svn-id: http://code.djangoproject.com/svn/django/trunk@17352 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/backends/mysql/base.py | 2 +- tests/regressiontests/backends/tests.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py index 8ce2c11344..02bdda199b 100644 --- a/django/db/backends/mysql/base.py +++ b/django/db/backends/mysql/base.py @@ -119,7 +119,7 @@ class CursorWrapper(object): # misclassified and Django would prefer the more logical place. if e[0] in self.codes_for_integrityerror: raise utils.IntegrityError, utils.IntegrityError(*tuple(e)), sys.exc_info()[2] - raise + raise utils.DatabaseError, utils.DatabaseError(*tuple(e)), sys.exc_info()[2] except Database.DatabaseError, e: raise utils.DatabaseError, utils.DatabaseError(*tuple(e)), sys.exc_info()[2] diff --git a/tests/regressiontests/backends/tests.py b/tests/regressiontests/backends/tests.py index b561b4eb2d..436da8c2d0 100644 --- a/tests/regressiontests/backends/tests.py +++ b/tests/regressiontests/backends/tests.py @@ -351,6 +351,12 @@ class BackendTestCase(TestCase): self.assertTrue(hasattr(connection.ops, 'connection')) self.assertEqual(connection, connection.ops.connection) + def test_duplicate_table_error(self): + """ Test that creating an existing table returns a DatabaseError """ + cursor = connection.cursor() + query = 'CREATE TABLE %s (id INTEGER);' % models.Article._meta.db_table + with self.assertRaises(DatabaseError): + cursor.execute(query) # We don't make these tests conditional because that means we would need to # check and differentiate between: