Ошибка соединения между Django и Postgres
Я создаю тестовый сервер Amazon AWS с Django, на котором я использую Postgres в качестве базы данных. Вот мой путь:
$ sudo apt update
$ sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib
Я загрузил свои файлы с Github и создал виртуальную среду для него, а внутри установил psycopg2.
$ pip install psycopg2
Как я настроил Postgres:
$ sudo -i -u postgres
$ psql
$ createuser --interactive (super user);
$ createdb Filme;
Некоторая другая информация о Postgres, которая может быть полезной:
$ service postgresql status
> postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset:>
Active: active (exited) since Wed 2022-10-05 17:08:25 UTC; 20h ago
Main PID: 977 (code=exited, status=0/SUCCESS)
CPU: 1ms
Oct 05 17:08:25 ip-172-31-29-151 systemd[1]: Starting PostgreSQL RDBMS...
Oct 05 17:08:25 ip-172-31-29-151 systemd[1]: Finished PostgreSQL RDBMS.
$ pg_lsclusters
> Ver Cluster Port Status Owner Data directory Log file
14 main 5432 online postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log
В моем settings.py
файле моего проекта:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'Filme',
}
}
Ошибка возникает, когда я пытаюсь запустить миграцию в новую базу данных:
PS: Я также следовал руководству DigitalOcean, но в итоге столкнулся с почти идентичной ошибкой. (https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04)
Вы настроили только параметры ENGINE
и NAME
. Вы оставили все остальные параметры подключения к БД по умолчанию, такие как имя пользователя, пароль и т.д. Поэтому он пытается подключиться к базе данных, используя имя пользователя текущего пользователя Linux, которое, по-видимому, равно ubuntu
. Я предполагаю, что когда вы запускали createuser
, вы не указали имя пользователя ubuntu
и не оставили пароль пустым, поэтому вам нужно установить эти параметры в конфиге базы данных Django.
Посмотрите на все эти параметры подключения к базе данных в учебнике Digital Ocean, на который вы дали ссылку, по сравнению с двумя параметрами, которые вы настроили в своем файле настроек.
Обратите внимание, что поскольку вы просто запускаете Django и Postgres на одном сервере, нет ничего специфичного для AWS в вашем вопросе. Это то же самое, как вы настраиваете Django/PostgreSQL на любом другом Linux-сервере. Если вы ищете "django connect to postgres on AWS" или что-то подобное, (фокусируясь на аспекте AWS вашей проблемы, когда на самом деле в вашей проблеме нет аспекта AWS), это, вероятно, мешает вам найти ответы на ваш вопрос.