summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
Diffstat (limited to 'django')
-rw-r--r--django/db/migrations/migration.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/django/db/migrations/migration.py b/django/db/migrations/migration.py
index 3a41703ef8..ffe0b1fb3d 100644
--- a/django/db/migrations/migration.py
+++ b/django/db/migrations/migration.py
@@ -162,8 +162,10 @@ class Migration:
schema_editor.collected_sql.append("--")
if not operation.reduces_to_sql:
continue
- if not schema_editor.connection.features.can_rollback_ddl and operation.atomic:
- # We're forcing a transaction on a non-transactional-DDL backend
+ atomic_operation = operation.atomic or (self.atomic and operation.atomic is not False)
+ if not schema_editor.atomic_migration and atomic_operation:
+ # Force a transaction on a non-transactional-DDL backend or an
+ # atomic operation inside a non-atomic migration.
with atomic(schema_editor.connection.alias):
operation.database_backwards(self.app_label, schema_editor, from_state, to_state)
else: