DataGrip не может подключиться к локальному PostgreSQL, работающему в Docker Desktop для Windows с серверной частью WSL2

У меня установлен Docker Desktop в Windows 10. Он использует серверную часть WSL2. У меня есть 3 базы данных, работающие на докере. Один Mongo, один Clickhouse и один PostgreSQL. DataGrip может легко подключиться к Clickhouse на локальном хосте: 8123, а также к Mongo на локальном хосте: 27017, но по какой-то причине не может подключиться к PostgreSQL, работающему на 5432.

Особенность этого заключается в том, что pgAdmin может подключаться к PostgreSQL на локальном хосте: 5432.

DataGrip может легко подключиться к двум другим контейнерам в этом файле создания докеров.

Это мой docker compose, который я использую для запуска трех контейнеров:

version: "3.9"
services:
  postgres:
    image: postgres:15.1-alpine
    restart: on-failure
    ports:
      - "5432:5432"
    volumes:
      - fpm_pg:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_DB=arm
      - POSTGRES_PASSWORD=postgres

  mongo:
    image: "mongo:latest"
    ports:
      - "27017:27017"
    env_file:
      - .env
    restart: "no"

  clickhouse:
    image: "clickhouse/clickhouse-server"
    ports:
      - "8123:8123"
      - "9000:9000"
      - "9004:9004"
    depends_on:
      - postgres
    env_file:
      - .env
    restart: "no"

volumes:
  fpm_pg:
    driver: local

Ошибка:

DBMS:  Case sensitivity: plain=mixed,
delimited=exact 
Driver:  (ver. , JDBC) 
Effective version: PostgreSQL (ver. 0.0) 
The connection attempt failed.

Кто-нибудь сталкивался с этим?

Я также не могу установить эту связь изнутри «Голанда», что я и попытался сделать в первую очередь.

Я прочитал это: DataGrip [08001] Попытка подключения не удалась. Попытка подключения не удалась, но это не помогает.

Типы данных JavaScript
Типы данных JavaScript
В JavaScript существует несколько типов данных, включая примитивные типы данных и ссылочные типы данных. Вот краткое объяснение различных типов данных...
Как сделать движок для футбольного матча? (простой вариант)
Как сделать движок для футбольного матча? (простой вариант)
Футбол. Для многих людей, живущих на земле, эта игра - больше, чем просто спорт. И эти люди всегда мечтают стать футболистом или менеджером. Но, к...
Знайте свои исключения!
Знайте свои исключения!
В Java исключение - это событие, возникающее во время выполнения программы, которое нарушает нормальный ход выполнения инструкций программы. Когда...
CSS Flex: что должен знать каждый разработчик
CSS Flex: что должен знать каждый разработчик
CSS Flex: что должен знать каждый разработчик Модуль flexbox, также известный как гибкий модуль разметки box, помогает эффективно проектировать и...
Введение в раздел "Заголовок" в HTML
Введение в раздел "Заголовок" в HTML
Говорят, что лучшее о человеке можно увидеть только изнутри, и это относится и к веб-страницам HTML! Причина, по которой некоторые веб-страницы не...
0
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

ХОРОШО. Я решил это. Прочитав сам файл журнала, я заметил, что это исключение сокета, что заставило меня поверить, что с портом 5432 что-то не так. Я по-прежнему утверждаю, что, поскольку pgAdmin мог подключиться к этой базе данных, DataGrip должен был сделать то же самое, но давайте спустимся в кроличью нору? Я использовал это видео для проверки своих портов:

Как узнать, какое приложение использует ваши TCP-порты

Я проверил порты, используя:

netstat -an | findstr 5432

Который показал мне, что даже когда контейнер БД не запущен и даже сам Docker закрыт, что-то прослушивает 5432.

Я использовал:

netstat -aon | findstr 5432

Я обнаружил, что PID: 4846 работает на 5432. Зайдя в TaskManager> Details, найдя PID 4846, я обнаружил, что «Windows IP Helper service» прослушивает этот порт. Быстрый поиск привел меня к этому ответу:

Вспомогательная служба Windows IP (iphlpsvc) — можно ли изменить порт?

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

netsh interface portproxy show all
netsh interface portproxy delete v4tov4 listenport=5432 listenaddress=0.0.0.0
netsh interface portproxy delete v4tov4 listenport=5432 listenaddress=127.0.0.1

Решил проблему.

Теперь я должен еще раз подчеркнуть, что по какой-то причине у pgAdmin не было проблем с переадресацией портов и он мог без проблем подключиться к БД, что заставило меня поверить, что порт и соединение должны быть в порядке. Надеюсь, это поможет кому-то в будущем.

Другие вопросы по теме