#33739 closed Bug (invalid)
Migration on the test database doesn't work
| Reported by: | ThalusA | Owned by: | nobody |
|---|---|---|---|
| Component: | Testing framework | Version: | 4.0 |
| Severity: | Normal | Keywords: | postgres unittest |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
"Any migrations will also be applied in order to keep it up to date." https://docs.djangoproject.com/en/4.0/topics/testing/overview/#the-test-database-1
The statement above is false, I will explain why.
First of all, here are all my versions:
- PostgreSQL 14.2 (with PostGIS 3.2)
- Django 4.0.4
I'm using unitary tests for my app using Django's TestCase. It is detected nicely, everything works according to plan except for one thing.
When I run ./manage.py test, Django creates another database called test_administrator because my database name is administrator but in this database, there is only the table for PostGIS data, and not all the models from administrator which are created using ./manage.py migrate.
My temporary fix is to run ./manage.py migrate on the database test_administrator and run the command ./manage.py test with the flag to keep the database because it deletes it each time I run it, elsewhere.
It would be lovely to have a fix on this issue.
Change History (6)
follow-up: 3 comment:1 by , 3 years ago
| Severity: | Release blocker → Normal |
|---|
comment:2 by , 3 years ago
| Resolution: | → needsinfo |
|---|---|
| Status: | new → closed |
comment:3 by , 3 years ago
Replying to Mariusz Felisiak:
Can you provide a sample project with your database configuration?
My project is quite complex so I can give you its structure and database configuration
.
├── aact
│ ├── apps.py
│ ├── __init__.py
│ ├── management
│ │ ├── commands
│ │ │ ├── extract_transform_load.py
│ │ │ └── __init__.py
│ │ └── __init__.py
│ ├── models
│ │ ├── brief_summary.py
│ │ ├── calculated_values.py
│ │ ├── central_contact.py
│ │ ├── condition.py
│ │ ├── contact.py
│ │ ├── detailed_description.py
│ │ ├── eligibility.py
│ │ ├── facility.py
│ │ ├── __init__.py
│ │ ├── intervention.py
│ │ ├── investigator.py
│ │ ├── sponsor.py
│ │ └── trial.py
│ └── transformer
│ ├── age.py
│ ├── calculated_properties.py
│ ├── fields.py
│ ├── gender.py
│ ├── __init__.py
│ ├── links.py
│ ├── phase.py
│ ├── recruiting_status.py
│ └── trial.py
├── Aptfile
├── back
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── docker-compose.yml
├── launch.sh
├── manage.py
├── medical
│ ├── admin.py
│ ├── apps.py
│ ├── fixtures
│ │ ├── alterations.json
│ │ ├── biomarkers.json
│ │ ├── histologies.json
│ │ ├── __init__.py
│ │ ├── mechanisms_of_action.json
│ │ ├── molecule_types.json
│ │ ├── organs.json
│ │ ├── routes_of_administrationorgans.json
│ │ ├── situations.json
│ │ └── specialities.json
│ ├── __init__.py
│ ├── managers
│ │ ├── __init__.py
│ │ └── medical_alias_manager.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── models
│ │ ├── alteration.py
│ │ ├── biomarker.py
│ │ ├── histology.py
│ │ ├── __init__.py
│ │ ├── mechanism_of_action.py
│ │ ├── molecule_type.py
│ │ ├── organ.py
│ │ ├── route_of_administration.py
│ │ ├── situation.py
│ │ └── speciality.py
│ ├── serializers
│ │ ├── alteration.py
│ │ ├── biomarker.py
│ │ ├── histology.py
│ │ ├── __init__.py
│ │ ├── mechanism_of_action.py
│ │ ├── molecule_type.py
│ │ ├── organ.py
│ │ ├── route_of_administration.py
│ │ ├── situation.py
│ │ └── speciality.py
│ ├── tests.py
│ ├── translation.py
│ ├── urls.py
│ └── views
│ ├── alteration.py
│ ├── biomarker.py
│ ├── histology.py
│ ├── __init__.py
│ ├── mechanism_of_action.py
│ ├── molecule_type.py
│ ├── organ.py
│ ├── route_of_administration.py
│ ├── situation.py
│ └── speciality.py
├── organization
│ ├── admin.py
│ ├── apps.py
│ ├── enums
│ │ ├── __init__.py
│ │ ├── recruiting_status.py
│ │ └── slots.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── models
│ │ ├── facility.py
│ │ ├── __init__.py
│ │ └── sponsor.py
│ ├── serializers
│ │ ├── facility.py
│ │ ├── __init__.py
│ │ └── sponsor.py
│ ├── tests.py
│ ├── urls.py
│ └── views
│ ├── facility.py
│ ├── __init__.py
│ └── sponsor.py
├── patient
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── 0002_initial.py
│ │ └── __init__.py
│ ├── models
│ │ ├── __init__.py
│ │ ├── patient_form.py
│ │ └── pre_screening_decision.py
│ ├── serializers
│ │ ├── __init__.py
│ │ ├── patient_form.py
│ │ └── pre_screening_decision.py
│ ├── tests.py
│ ├── urls.py
│ └── views
│ ├── __init__.py
│ └── patient_form.py
├── Procfile
├── README.md
├── requirements.txt
├── resources
│ ├── apps.py
│ ├── fixtures
│ │ ├── cancer_synonyms.json
│ │ ├── cities.json
│ │ ├── facilities_aliases.json
│ │ ├── line_synonyms.json
│ │ ├── organs_specialities.json
│ │ ├── prioritized_terms.json
│ │ └── standard_facilities.json
│ ├── __init__.py
│ ├── managers
│ │ ├── alias_manager.py
│ │ ├── __init__.py
│ │ └── priority_manager.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── models
│ │ ├── cancer_synonym.py
│ │ ├── city.py
│ │ ├── facility_alias.py
│ │ ├── __init__.py
│ │ ├── line_synonym.py
│ │ ├── organ_speciality.py
│ │ ├── prioritized_terms.py
│ │ └── standard_facility.py
│ ├── serializers
│ │ ├── __init__.py
│ │ └── standard_facility.py
│ ├── solvers
│ │ ├── __init__.py
│ │ ├── priority_resolver.py
│ │ └── regex_resolver.py
│ ├── urls.py
│ └── views
│ ├── __init__.py
│ └── standard_facility.py
├── resources.sh
├── runtime.txt
├── scheduler.py
├── secret_key.py
├── trial
│ ├── admin.py
│ ├── apps.py
│ ├── enums
│ │ ├── adjuvant_or_neo_adjuvant.py
│ │ ├── brain_metastasis.py
│ │ ├── field.py
│ │ ├── gender.py
│ │ ├── __init__.py
│ │ ├── partnership.py
│ │ ├── phase.py
│ │ ├── poc.py
│ │ ├── recist_measurable.py
│ │ └── review_status.py
│ ├── fixtures
│ │ └── specific_criterion.json
│ ├── __init__.py
│ ├── management
│ │ ├── commands
│ │ │ ├── __init__.py
│ │ │ └── loadditep.py
│ │ └── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── 0002_initial.py
│ │ ├── 0003_external.py
│ │ ├── 0004_cohort_organs.py
│ │ ├── 0004_specificcriterion_specificcriterionvalue.py
│ │ ├── 0004_trial_comments.py
│ │ ├── 0005_alter_specificcriterion_question_hint.py
│ │ ├── 0005_merge_0004_cohort_organs_0004_trial_comments.py
│ │ ├── 0006_merge_20220518_1417.py
│ │ ├── 0006_trial_brief_summary_trial_brief_summary_en_and_more.py
│ │ ├── 0007_alter_cohort_organs.py
│ │ ├── 0008_alter_cohort_organs.py
│ │ ├── 0009_merge_20220519_1116.py
│ │ ├── 0010_alter_trialbiomarker_unique_together.py
│ │ └── __init__.py
│ ├── models
│ │ ├── cohort.py
│ │ ├── condition.py
│ │ ├── contact.py
│ │ ├── external.py
│ │ ├── __init__.py
│ │ ├── intervention.py
│ │ ├── other_exclusion_criterion.py
│ │ ├── other_inclusion_criterion.py
│ │ ├── specific_criterion.py
│ │ ├── trial_biomarker.py
│ │ ├── trial_facility.py
│ │ └── trial.py
│ ├── serializers
│ │ ├── cohort.py
│ │ ├── condition.py
│ │ ├── contact.py
│ │ ├── external
│ │ │ ├── gustave_roussy.py
│ │ │ └── __init__.py
│ │ ├── __init__.py
│ │ ├── intervention.py
│ │ ├── other_exclusion_criterion.py
│ │ ├── other_inclusion_criterion.py
│ │ ├── specific_criterion.py
│ │ ├── trial_biomarker.py
│ │ ├── trial_facility.py
│ │ ├── trial.py
│ │ └── trial_search.py
│ ├── tests
│ │ ├── __init__.py
│ │ └── test_trial.py
│ ├── translation.py
│ ├── urls.py
│ └── views
│ ├── external
│ │ ├── gustave_roussy.py
│ │ └── __init__.py
│ ├── __init__.py
│ ├── specific_criterion.py
│ ├── trial.py
│ └── trial_search.py
└── user
├── admin.py
├── apps.py
├── enums
│ ├── __init__.py
│ └── user_type.py
├── __init__.py
├── management
│ ├── commands
│ │ ├── create_fake_users.py
│ │ ├── create_superuser_with_password.py
│ │ ├── __init__.py
│ │ └── token.py
│ └── __init__.py
├── migrations
│ ├── 0001_initial.py
│ ├── 0002_alter_user_options.py
│ └── __init__.py
├── models
│ ├── anonymous.py
│ ├── base_user.py
│ ├── doctor.py
│ ├── __init__.py
│ ├── investigator.py
│ ├── patient.py
│ ├── referrent.py
│ └── sponsor.py
├── permissions
│ ├── anonymous_permissions.py
│ ├── custom_permissions.py
│ ├── __init__.py
│ ├── investigator_permissions.py
│ ├── patient_permissions.py
│ ├── referent_permissions.py
│ └── sponsor_permissions.py
├── serializers
│ ├── base_user.py
│ ├── __init__.py
│ ├── investigator.py
│ ├── patient.py
│ ├── referent.py
│ └── sponsor.py
├── tests.py
├── urls.py
└── views
├── base_user.py
├── __init__.py
├── investigator.py
├── patient.py
├── referent.py
└── sponsor.py
53 directories, 267 files
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
if 'DATABASE_URL' in os.environ:
DATABASES = {
'default': dj_database_url.parse(os.environ.get('DATABASE_URL'))
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': env('A_DATABASE_NAME'),
'USER': env('A_DATABASE_USER'),
'PASSWORD': env('A_DATABASE_PASS'),
'HOST': env('A_DATABASE_HOST'),
'PORT': env('A_DATABASE_PORT'),
},
}
DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis'
DATABASES['b'] = {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS': {
'options': '-c search_path=ctgov'
},
'NAME': env('B_DATABASE_NAME'),
'USER': env('B_DATABASE_USER'),
'PASSWORD': env('B_DATABASE_PASS'),
'HOST': env('B_DATABASE_HOST'),
'PORT': env('B_DATABASE_PORT'),
}
comment:4 by , 3 years ago
My project is quite complex so I can give you its structure and database configuration
Thanks, unfortunately it's not enough to confirm a bug in Django. Your issue may be related with lack of support for database schemas, see #6148, but it's hard to say without a reproducible scenario. Please reopen the ticket if you can debug your issue and provide a minimal project that reproduces the issue.
comment:5 by , 3 years ago
| Resolution: | needsinfo → fixed |
|---|
My problem was a misconfiguration of my settings. There was a conflict between my custom user model and rest_framework's authtoken. So I only had to touch the INSTALLED_APPS settings
Can you provide a sample project with your database configuration?