diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py index 87401f2da9..ea04a5ec87 100644 --- a/django/db/backends/mysql/base.py +++ b/django/db/backends/mysql/base.py @@ -457,7 +457,8 @@ class DatabaseWrapper(BaseDatabaseWrapper): pass def _set_autocommit(self, autocommit): - self.connection.autocommit(autocommit) + with self.wrap_database_errors: + self.connection.autocommit(autocommit) def disable_constraint_checking(self): """ diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py index 7610045f67..11ab5744ce 100644 --- a/django/db/backends/oracle/base.py +++ b/django/db/backends/oracle/base.py @@ -625,7 +625,8 @@ class DatabaseWrapper(BaseDatabaseWrapper): pass def _set_autocommit(self, autocommit): - self.connection.autocommit = autocommit + with self.wrap_database_errors: + self.connection.autocommit = autocommit def check_constraints(self, table_names=None): """ diff --git a/django/db/backends/postgresql_psycopg2/base.py b/django/db/backends/postgresql_psycopg2/base.py index 23da101d01..d44bb5cdd9 100644 --- a/django/db/backends/postgresql_psycopg2/base.py +++ b/django/db/backends/postgresql_psycopg2/base.py @@ -169,14 +169,15 @@ class DatabaseWrapper(BaseDatabaseWrapper): self.connection.set_isolation_level(isolation_level) def _set_autocommit(self, autocommit): - if self.psycopg2_version >= (2, 4, 2): - self.connection.autocommit = autocommit - else: - if autocommit: - level = psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT + with self.wrap_database_errors: + if self.psycopg2_version >= (2, 4, 2): + self.connection.autocommit = autocommit else: - level = self.isolation_level - self.connection.set_isolation_level(level) + if autocommit: + level = psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT + else: + level = self.isolation_level + self.connection.set_isolation_level(level) def check_constraints(self, table_names=None): """ diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py index 96b03149d7..a219178570 100644 --- a/django/db/backends/sqlite3/base.py +++ b/django/db/backends/sqlite3/base.py @@ -387,7 +387,8 @@ class DatabaseWrapper(BaseDatabaseWrapper): level = '' # 'isolation_level' is a misleading API. # SQLite always runs at the SERIALIZABLE isolation level. - self.connection.isolation_level = level + with self.wrap_database_errors: + self.connection.isolation_level = level def check_constraints(self, table_names=None): """