簡體   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