[英]DataGrip Cannot Connect to Local PostgreSQL Running in Docker Desktop for Windows with WSL2 Backend
我在 windows 10 上安装了 Docker 桌面。它使用 WSL2 后端。 我有 3 个数据库在 docker 上运行。一个 Mongo,一个 Clickhouse,一个 PostgreSQL。DataGrip 可以很容易地连接到 localhost:8123 上的 Clickhouse,也可以连接到 localhost:27017 上的 Mongo,但由于某种原因它无法连接到正在运行的 PostgreSQL在 5432。
关于此的特殊之处在于 pgAdmin 可以连接到 localhost:5432 上的 PostgreSQL。
DataGrip 可以轻松连接到这个 docker-compose 文件中的另外两个容器。
这是我的 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.
有没有人遇到过这个?
我也无法从“Goland”内部建立这种联系,这是我尝试的第一件事。
我读过这个: DataGrip [08001] 连接尝试失败。 连接尝试失败,但无济于事。
好的。 我解决了。 在我自己阅读日志文件后,我注意到这是一个套接字异常,这让我相信端口 5432 有问题。我仍然认为,因为 pgAdmin 可以连接到那个数据库,DataGrip 应该也可以这样做,但是让我们 go 掉进兔子洞好吗? 我用这个视频来检查我的端口:
我使用以下方法检查了端口:
netstat -an | findstr 5432
这告诉我,即使 DB 容器没有运行,甚至 Docker 本身关闭,5432 上也有东西在监听。
我用了:
netstat -aon | findstr 5432
我发现 PID:4846 正在 5432 上运行。进入任务管理器>详细信息,找到 PID 4846 让我发现“Windows IP Helper 服务”正在侦听此端口。 快速搜索使我得到了这个答案:
Windows IP Helper Service (iphlpsvc) - 是否可以更改端口?
我还记得,对于 WSL2 中旧版本 docker 的先前项目,转发端口有很多问题,我在这个端口上使用了端口转发。 所以,快速:
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 没有任何端口转发问题,可以毫无问题地连接到数据库,这让我相信端口和连接应该没问题。 希望这对将来的人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.