Opened 3 years ago
Last modified 3 years ago
#33677 closed Bug
Django test does not migrate parallel db's if --keepdb --parallel option is used — at Initial Version
Reported by: | Barney Szabolcs | Owned by: | nobody |
---|---|---|---|
Component: | Testing framework | Version: | 2.2 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
To run my tests, I run
./manage.py test --keepdb --parallel -v 2
I use postgres db and if I have any change in the db (eg. a field added),
the parallel db's don't get migrated.
The output when the tests fail after the migration:
Running migrations: Applying mymodel.0007_auto_20220503_1433... OK Using existing clone for alias 'default' ('myproject_test')... Cache table 'rhymedict_cache' already exists. Using existing clone for alias 'default' ('myproject_test')... Using existing clone for alias 'default' ('myproject_test')... Using existing clone for alias 'default' ('myproject_test')... ... ====================================================================== ERROR: test_mytest (myproject.myapp.test.MyTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): ... psycopg2.errors.UndefinedColumn: column "field2" of relation "myapp_mymodel" does not exist LINE 1: ... "field1", "field2") VA... ... django.db.utils.ProgrammingError: column "field2" of relation "myapp_mymodel" does not exist LINE 1: ... "field1", "field2") VA...
After I drop the myproject_test_1... myproject_test_4 db's manually and run the command again:
Using existing test database for alias 'default' ('myproject_test')... Operations to perform: Synchronize unmigrated apps: analytical, compressor, cookielaw, corsheaders, crispy_forms, debug_toolbar, dj_rest_auth, django_hosts, genlocale, import_export, massadmin, menu, messages, rest_framework, rosetta, sitemaps, static_sitemaps, staticfiles Apply all migrations: myapp1, myapp2 Synchronizing apps without migrations: Creating tables... Running deferred SQL... Running migrations: No migrations to apply. Cache table 'myproject_cache' already exists. Using existing clone for alias 'default' ('myproject_test')... Got an error creating the test database: source database "myproject_test" is being accessed by other users DETAIL: There is 1 other session using the database.
Without the --parallel option, the test command runs just fine.
My Django version is 2.2.12
Note:
See TracTickets
for help on using tickets.