Ошибка соединения между 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), это, вероятно, мешает вам найти ответы на ваш вопрос.

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