Opened 8 years ago
Last modified 8 years ago
#27089 closed Cleanup/optimization
commands/makemigrations.py runs MigrationLoader.check_consistent_history() for all database connections — at Initial Version
Reported by: | Alexander Holmbäck | Owned by: | nobody |
---|---|---|---|
Component: | Migrations | Version: | 1.10 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
In the file django/core/management/commands/makemigrations.py (line 97-100), an instance of MigrationLoader (loader) checks consistency on every database connection defined in settings.py.
for db in connection: connection = connection[db] if connection.settings_dict['ENGINE'] != 'django.db.backends.dummy': loader.check_consistent_history(connection)
The loader will then raise an InconsistentMigrationHistory exception for a connection whose migrations is not applied consistently, even if it's not to participate in the migration process.
I didn't expect makemigrations
would check connections that isn't to be migrated. Also, the error message "Migration xxx is applied before its dependency xxx" (line 285 in db/migrations/loader.py) didn't indicate checked connection.
A more intuitive behavior would be to check only the connection that is to be migrated, or, if that isn't possible, include connection name in the error message.