mirror of https://github.com/django/django.git
Fix schema editor interaction with new transactions
This commit is contained in:
parent
7f3678dc4c
commit
6e21a59402
|
@ -64,6 +64,8 @@ class BaseDatabaseSchemaEditor(object):
|
||||||
Marks the start of a schema-altering run.
|
Marks the start of a schema-altering run.
|
||||||
"""
|
"""
|
||||||
self.deferred_sql = []
|
self.deferred_sql = []
|
||||||
|
self.old_autocommit = self.connection.autocommit
|
||||||
|
if self.connection.autocommit:
|
||||||
self.connection.set_autocommit(False)
|
self.connection.set_autocommit(False)
|
||||||
|
|
||||||
def commit(self):
|
def commit(self):
|
||||||
|
@ -73,7 +75,7 @@ class BaseDatabaseSchemaEditor(object):
|
||||||
for sql in self.deferred_sql:
|
for sql in self.deferred_sql:
|
||||||
self.execute(sql)
|
self.execute(sql)
|
||||||
self.connection.commit()
|
self.connection.commit()
|
||||||
self.connection.set_autocommit(True)
|
self.connection.set_autocommit(self.old_autocommit)
|
||||||
|
|
||||||
def rollback(self):
|
def rollback(self):
|
||||||
"""
|
"""
|
||||||
|
@ -82,7 +84,7 @@ class BaseDatabaseSchemaEditor(object):
|
||||||
if not self.connection.features.can_rollback_ddl:
|
if not self.connection.features.can_rollback_ddl:
|
||||||
raise RuntimeError("Cannot rollback schema changes on this backend")
|
raise RuntimeError("Cannot rollback schema changes on this backend")
|
||||||
self.connection.rollback()
|
self.connection.rollback()
|
||||||
self.connection.set_autocommit(True)
|
self.connection.set_autocommit(self.old_autocommit)
|
||||||
|
|
||||||
# Core utility functions
|
# Core utility functions
|
||||||
|
|
||||||
|
|
|
@ -453,7 +453,7 @@ class SchemaTests(TransactionTestCase):
|
||||||
Tag.objects.create(title="foo", slug="foo")
|
Tag.objects.create(title="foo", slug="foo")
|
||||||
Tag.objects.create(title="bar", slug="foo")
|
Tag.objects.create(title="bar", slug="foo")
|
||||||
connection.rollback()
|
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 = SlugField(unique=True)
|
||||||
new_new_field.set_attributes_from_name("slug")
|
new_new_field.set_attributes_from_name("slug")
|
||||||
editor = connection.schema_editor()
|
editor = connection.schema_editor()
|
||||||
|
|
Loading…
Reference in New Issue