diff --git a/django/core/management/commands/flush.py b/django/core/management/commands/flush.py index 8e75b8e84c..38196ac78b 100644 --- a/django/core/management/commands/flush.py +++ b/django/core/management/commands/flush.py @@ -28,8 +28,8 @@ class Command(NoArgsCommand): 're-executed, and the initial_data fixture will be re-installed.') def handle_noargs(self, **options): - db = options.get('database') - connection = connections[db] + database = options.get('database') + connection = connections[database] verbosity = int(options.get('verbosity')) interactive = options.get('interactive') # The following are stealth options used by Django's internals. @@ -63,7 +63,8 @@ Are you sure you want to do this? if confirm == 'yes': try: - with transaction.atomic(using=db): + with transaction.atomic(using=database, + savepoint=connection.features.can_rollback_ddl): with connection.cursor() as cursor: for sql in sql_list: cursor.execute(sql) @@ -78,7 +79,7 @@ Are you sure you want to do this? six.reraise(CommandError, CommandError(new_msg), sys.exc_info()[2]) if not inhibit_post_migrate: - self.emit_post_migrate(verbosity, interactive, db) + self.emit_post_migrate(verbosity, interactive, database) # Reinstall the initial_data fixture. if options.get('load_initial_data'):