Миграция с базой данных postgres не удалась

Я хочу использовать postgres в качестве базы данных по умолчанию для моих моделей django. Я использую docker-compose для postgres и, похоже, он работает.

version: '3.2'
services:

  postgres:
    image: postgres:13.4
    environment:
      POSTGRES_DB: backend_db
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    volumes:
      - database-data:/var/lib/postgresql/data/ 
    ports:
      - 5432:5432
    networks:
      - postgres     

volumes:
  database-data:
    driver: local  

networks:
  postgres:
    driver: bridge  

Однако, когда я делаю python3 manage.py migrate --database postgres, я получаю следующее:

Operations to perform:
  Apply all migrations: admin, auth, authentication, authtoken, contenttypes, sessions, token_blacklist, vpp_optimization
Running migrations:
  No migrations to apply.

Проблема проявляется также, когда я делаю python3 manage.py runserver, где я получаю:

Performing system checks...

System check identified no issues (0 silenced).

You have 31 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, authentication, authtoken, contenttypes, sessions, token_blacklist, vpp_optimization.
Run 'python manage.py migrate' to apply them.
April 11, 2022 - 05:32:10
Django version 3.1.7, using settings 'core.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Похоже, что команда python3 manage.py migrate --database postgres не была выполнена.

Вот settings.py часть баз данных:

DATABASES = {
    'default': get_config(
        'DATABASE_URL',
        'sqlite:///' + BASE_DIR.child('db.sqlite3'),
        cast=db_url
    ),
    'postgres': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': get_config('DB_NAME', 'backend_db'),
        'USER': get_config('DB_USER', 'postgres'),
        'PASSWORD': get_config('DB_PASSWORD', 'postgres'),
        'HOST': get_config('DB_HOST', 'postgres-service'),
        'PORT': get_config('DB_PORT', '5432')
    }
}

Есть идеи, что я делаю неправильно?

Проблема в том, что когда вы запускаете:

python3 manage.py migrate --database postgres

Вы явно определяете, что база данных, в которую вы хотите перенести схему базы данных, находится в postgres. Но когда вы запускаете приложение, вы используете:

python3 manage.py runserver

Согласно вашим настройкам, есть ли что-нибудь, что указывает на то, что вы будете использовать postgres db. Поэтому я думаю, что на данный момент вы используете sqlite db.

Одна вещь, которую вы можете сделать, это установить переменную env, чтобы указать, какую базу данных использовать при запуске приложения. Надеюсь, это может помочь.

Вернуться на верх