Ошибка соединения с БД Postgresql PyCharm

Не могу подключиться к БД, хотя я уверен на 100% что все данные правильные, я скачал проект с git на другой пк, и всё работает и подключается, но у меня на ноутбуке возникает такая ошибка:

Ошибка

введите сюда описание изображения

Windows 10, Home, PyCharm Pro 2021.1.1

docker-compose.yml

version: '3'

services:

  backend:
    build: ./
    container_name: diploma_container
    restart: always
    command: ./commands/start_server_${MODE}.sh
    ports:
      - "${PORT}:${WSGI_PORT}"
    volumes:
      - .\src:/srv/project/src
      - .\commands:/srv/project/commands
      - .\src\media:/srv/project/media
      - static_content:/var/www/diploma
    env_file:
      - .env
    environment:
      - DJANGO_SETTINGS_MODULE=app.settings.${MODE}
    depends_on:
      - postgres
      - rabbitmq
      - redis

  postgres:
    image: postgres:12
#    environment:
#      - POSTGRES_PASSWORD=mysecretpassword
    volumes:
      - pg_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    env_file:
      - .env

  nginx:
    image: nginx:1.19
    volumes:
      - .\nginx:/etc/nginx/conf.d
      - static_content:/var/www/diploma
    ports:
      - 80:80
      - 443:443
    env_file:
      - .env
    depends_on:
      - backend

  rabbitmq:
    image: rabbitmq:3.8-management-alpine
#    ports:
#      - 8181:15672
    env_file: .env
    restart: always

  redis:
    image: redis
    env_file: .env
    restart: always

  redis-commander:
    container_name: redis-commander
    hostname: redis-commander
    image: rediscommander/redis-commander:latest
    restart: always
    environment:
    - REDIS_HOSTS=redis
    ports:
    - "8081:8081"

  celery:
    env_file: .env
    build: .
    command: ./commands/start_celery.sh
    restart: always
    depends_on:
      - redis
      - rabbitmq
    environment:
      - DJANGO_SETTINGS_MODULE=app.settings.${MODE}
    volumes:
      - ./src:/srv/project/src
      - ./commands:/srv/project/commands

  celerybeat:
    env_file: .env
    build: .
    container_name: celerybeat
    command: ./commands/start_celerybeat.sh
    restart: always
    depends_on:
      - redis
      - celery
      - rabbitmq
    environment:
      - DJANGO_SETTINGS_MODULE=app.settings.${MODE}
    volumes:
      - ./src:/srv/project/src
      - ./commands:/srv/project/commands


volumes:
  pg_data: {}
  static_content: {}

Создание БД и пользователя:

CREATE USER admin WITH PASSWORD 'password';
ALTER ROLE admin SET client_encoding TO 'utf8';
ALTER ROLE admin SET default_transaction_isolation TO 'read committed';
ALTER ROLE admin SET timezone TO 'UTC';

CREATE DATABASE test;
GRANT ALL PRIVILEGES ON DATABASE test TO admin;

ALTER USER admin CREATEDB;

Ответы (1 шт):

Автор решения: asanisimov

Не наблюдаю у Вас в docker-compose задания пользователя. Для этого надо задать POSTGRES_USER. Либо явно либо в ваше окружение, в данном случае должен быть указан в файле .env. По умолчанию пользователь postgres от него Вы и будете подключаться, в случае если не заданы пользователи.

Если Вы все таки задали пользователя и уверены в правильности, то советую проделать следующее:

  1. Зайти внутрь контейнера docker exec -it <имя контейнера postgres> bash
  2. подключиться к БД psql -U postgres
  3. Посмотреть пользователей. \du

Дальше в зависимости от результата, если вашего юзера нет, значит Вы его не правильно задали/что то еще, если есть то проверяйте пароль/pg_hba файл на предмет доступа/ и тд.

UPDATE

На втором скрине видно что project encoding = windows-1251 при этом глобальная - UTF-8 так понимаю linux на текущей машине, если другой компьютер с виндой "проект с git на другой пк, и всё работает и подключается", то ответ очевиден). Либо перед созданием поменять кодировку проекта, либо заранее задать переменную PGCLIENTENCODING=UTF8 для windows само собой другую - это изменит стандартную кодировку системы.

По поводу

ALTER ROLE admin SET client_encoding TO 'utf8';

Если Вы подключаетесь после этого из терминала для проверки, то этот прием не поможет. Из документации.

Если и стандартный ввод, и стандартный вывод являются терминалом, то psql установит кодировку клиента в «auto», и подходящая клиентская кодировка будет определяться из локальных установок (переменная окружения LC_CTYPE в Unix). Если это работает не так, как ожидалось, кодировку клиента можно изменить, установив переменную окружения PGCLIENTENCODING.

→ Ссылка