Opened 9 years ago
Last modified 9 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.