У меня установлен 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] Попытка подключения не удалась. Попытка подключения не удалась, но это не помогает.
ХОРОШО. Я решил это. Прочитав сам файл журнала, я заметил, что это исключение сокета, что заставило меня поверить, что с портом 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 не было проблем с переадресацией портов и он мог без проблем подключиться к БД, что заставило меня поверить, что порт и соединение должны быть в порядке. Надеюсь, это поможет кому-то в будущем.