Fix schema editor interaction with new transactions

This commit is contained in:
Andrew Godwin 2013-04-19 09:01:45 +01:00
parent 7f3678dc4c
commit 6e21a59402
2 changed files with 6 additions and 4 deletions

View File

@ -64,7 +64,9 @@ class BaseDatabaseSchemaEditor(object):
Marks the start of a schema-altering run.
"""
self.deferred_sql = []
self.connection.set_autocommit(False)
self.old_autocommit = self.connection.autocommit
if self.connection.autocommit:
self.connection.set_autocommit(False)
def commit(self):
"""
@ -73,7 +75,7 @@ class BaseDatabaseSchemaEditor(object):
for sql in self.deferred_sql:
self.execute(sql)
self.connection.commit()
self.connection.set_autocommit(True)
self.connection.set_autocommit(self.old_autocommit)
def rollback(self):
"""
@ -82,7 +84,7 @@ class BaseDatabaseSchemaEditor(object):
if not self.connection.features.can_rollback_ddl:
raise RuntimeError("Cannot rollback schema changes on this backend")
self.connection.rollback()
self.connection.set_autocommit(True)
self.connection.set_autocommit(self.old_autocommit)
# Core utility functions

View File

@ -453,7 +453,7 @@ class SchemaTests(TransactionTestCase):
Tag.objects.create(title="foo", slug="foo")
Tag.objects.create(title="bar", slug="foo")
connection.rollback()
# Alter the slug field to be non-unique
# Alter the slug field to be unique
new_new_field = SlugField(unique=True)
new_new_field.set_attributes_from_name("slug")
editor = connection.schema_editor()