繁体   English   中英

DataGrip 无法连接到本地 PostgreSQL 在 Docker 桌面上运行,用于带有 WSL2 后端的 Windows

[英]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 掉进兔子洞好吗? 我用这个视频来检查我的端口:

如何查找哪个应用程序正在使用您的 TCP 端口

我使用以下方法检查了端口:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM