Permalink
Browse files

Fixed #22576: Ensure makemigrations doesn't touch the database.

  • Loading branch information...
andrewgodwin committed May 7, 2014
1 parent 6944418 commit f9d7e18dc5fa324ed095c6aafd83a34f3086a3de
Showing with 8 additions and 6 deletions.
  1. +3 −4 django/core/management/commands/makemigrations.py
  2. +5 −2 django/db/migrations/loader.py
@@ -50,10 +50,9 @@ def handle(self, *app_labels, **options):
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
@@ -143,8 +143,11 @@ def build_graph(self):
# 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 = {}

0 comments on commit f9d7e18

Please sign in to comment.