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.
Надеюсь, этот ответ может быть полезен кому-то другому.