From f9d7e18dc5fa324ed095c6aafd83a34f3086a3de Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Tue, 6 May 2014 22:41:59 -0700 Subject: [PATCH] Fixed #22576: Ensure makemigrations doesn't touch the database. --- django/core/management/commands/makemigrations.py | 7 +++---- django/db/migrations/loader.py | 7 +++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/django/core/management/commands/makemigrations.py b/django/core/management/commands/makemigrations.py index d8aada94da..81aedb57bf 100644 --- a/django/core/management/commands/makemigrations.py +++ b/django/core/management/commands/makemigrations.py @@ -50,10 +50,9 @@ class Command(BaseCommand): self.stderr.write("App '%s' could not be found. Is it in INSTALLED_APPS?" % app_label) sys.exit(2) - # Load the current graph state. Takes a connection, but it's not used - # (makemigrations doesn't look at the database state). - # Also make sure the graph is built without unmigrated apps shoehorned in. - loader = MigrationLoader(connections[DEFAULT_DB_ALIAS]) + # Load the current graph state. Pass in None for the connection so + # the loader doesn't try to resolve replaced migrations from DB. + loader = MigrationLoader(None) # Before anything else, see if there's conflicting apps and drop out # hard if there are any and they don't want to merge diff --git a/django/db/migrations/loader.py b/django/db/migrations/loader.py index 719f398771..0cf2c59402 100644 --- a/django/db/migrations/loader.py +++ b/django/db/migrations/loader.py @@ -143,8 +143,11 @@ class MigrationLoader(object): # Load disk data self.load_disk() # Load database data - recorder = MigrationRecorder(self.connection) - self.applied_migrations = recorder.applied_migrations() + if self.connection is None: + self.applied_migrations = set() + else: + recorder = MigrationRecorder(self.connection) + self.applied_migrations = recorder.applied_migrations() # Do a first pass to separate out replacing and non-replacing migrations normal = {} replacing = {}