You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Go代码查询本地PostgreSQL遇ECONNREFUSED(111)错误求助

解决Go调用sql.Open无报错但执行查询触发ECONNREFUSED(111)的问题

针对Windows环境下Go使用github.com/lib/pq连接本地PostgreSQL时的这个问题,结合你已确认的前提(参数正确、pgAdmin/psql能正常连接、服务运行),可以从以下几个方向排查解决:

1. 修正连接字符串的host地址,规避IPv6解析问题

Windows下localhost可能优先解析为IPv6地址[::1],若你的PostgreSQL未配置监听IPv6,就会触发连接拒绝:

  • 把连接字符串中的host=localhost替换为host=127.0.0.1,强制使用IPv4连接
  • 示例修正后的连接串:
    connStr := "postgres://your_user:your_pass@127.0.0.1:5432/your_db?sslmode=disable"
    

2. 检查PostgreSQL的监听配置

确认PostgreSQL确实在监听IPv4地址:

  1. 打开PostgreSQL安装目录下的data/postgresql.conf,找到listen_addresses配置项,确保值包含127.0.0.1或设为*(允许所有地址监听),比如:
    listen_addresses = '127.0.0.1,localhost'
    
  2. 打开data/pg_hba.conf,添加或确保存在允许本地IPv4连接的规则:
    host    all             all             127.0.0.1/32            scram-sha-256
    
  3. 修改后重启PostgreSQL服务生效

3. 排查Windows防火墙拦截

虽然pgAdmin和psql能正常连接,但Windows防火墙可能未允许Go程序(或IDE进程)访问5432端口:

  • 临时关闭Windows Defender防火墙,测试查询是否能正常执行
  • 如果恢复正常,在防火墙中添加允许规则:允许你的Go编译程序(或golang.exe、IDE进程)访问5432端口的入站/出站连接

4. 替换为兼容性更好的pgx驱动

github.com/lib/pq已进入维护状态,对新版本PostgreSQL的兼容性可能存在问题,建议替换为pgx驱动:

  1. 安装pgx标准库兼容包:
    go get github.com/jackc/pgx/v5/stdlib
    
  2. 修改代码中的驱动导入和连接逻辑:
    package main
    
    import (
        "database/sql"
        "fmt"
        _ "github.com/jackc/pgx/v5/stdlib"
    )
    
    func main() {
        db, err := sql.Open("pgx", "postgres://your_user:your_pass@127.0.0.1:5432/your_db?sslmode=disable")
        if err != nil {
            fmt.Println("Open error:", err)
            return
        }
        defer db.Close()
    
        var count int
        err = db.QueryRow("SELECT COUNT(*) FROM your_table").Scan(&count)
        if err != nil {
            fmt.Println("Query error:", err)
            return
        }
        fmt.Println("Count:", count)
    }
    

补充验证点

用netstat -ano | findstr :5432查看端口监听状态,确认PostgreSQL进程(可通过PID匹配任务管理器)正在监听0.0.0.0:5432或127.0.0.1:5432,而非仅[::1]:5432。

内容的提问来源于stack exchange,提问作者Tzvika Avni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 22:57:23