Django.db.backends.postgresql ошибка при попытке сделать миграцию моего проекта django

Я пытаюсь переключить мою базу данных Django с SQLite3 на PostgreSQl, поэтому я следую многим руководствам по установке и настройке Postgres с проектом Django.

Я сделал следующее: pip install psycopg2, pip install psycopg2-binary и я изменил settings.py следующим образом:

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.postgresql',

        'NAME': BASE_DIR / 'db.postgresql',

        'USER': 'muusername',

        'PASSWORD': 'mypassword',

        'HOST': '127.0.0.1',

        'PORT': '5432'

    }

}

Наконец я создал свою базу данных, выполнив команду python manage.py makemigrations. Однако, я получил эту ошибку:

django.core.exceptions.ImproperlyConfigured: 'django.db.backends.postgresql' isn't an available database backend or couldn't be imported. Check the above exception. To use one of the built-in backends, use 'django.db.backends.XXX', where XXX is one of:
    'mysql', 'oracle', 'sqlite3'

Обратите внимание, что я также секцесуально устанавливаю pgAdmin в моей ОС, которая является Windows 10 на первом этапе.

Я знаю, что проблема связана с конфигурацией Postgres в моем проекте django, но я не знаю, как это исправить, также я проверил мою версию djnago, которая является последней, также все необходимые пакеты установлены в моем venv.

В postgres нельзя добавлять таким образом:

'NAME': BASE_DIR / 'db.postgresql', #You got that error because of this. This setting is for only sqlite3 not for postgres

Просто добавьте db_name в NAME:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'your_db_name', #add your db name here
        'USER': 'postgres',
        'PASSWORD': 'your_db_password',
        'HOST': '127.0.0.1', 
        'PORT': '5432',
    }
}

Убедитесь, что вы действительно скачали сам установщик PostgreSQL и установили его.

Я решил эту проблему, просто обновив django, как вы можете видеть здесь в исключении:

django.core.exceptions.ImproperlyConfigured: 'django.db.backends.postgresql' isn't an available database backend or couldn't be imported. Check the above exception. To use one of the built-in backends, use 'django.db.backends.XXX', where XXX is one of:
'mysql', 'oracle', 'sqlite3'

Django просит пользователя использовать mysql, oracle или sqlite3, но не в случае с postgresql. Поэтому это исключение будет исправлено, когда пользователь обновит версию django.

Надеюсь, этот ответ может быть полезен кому-то другому.

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