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

PostgreSQL多主机连接报错求助:DSN格式是否有误?

Go连接PostgreSQL多主机DSN格式问题解决

你的DSN格式确实存在错误,PostgreSQL的Go驱动不支持在host字段中用逗号分隔多主机的写法,以下是问题分析和正确写法:

报错原因解析

  • 带空格的写法host=host1, host2, host3:驱动会按空格分割键值对,host1,会被识别为一个不完整的键(缺少对应的值),因此抛出missing = after "host1,"错误。
  • 去掉空格的host=host1,host2,host3:驱动会将整个host1,host2,host3当作单个主机名去DNS解析,自然找不到这个不存在的主机,所以出现dial tcp: lookup host1,host2,host3: no such host错误。

正确的DSN写法

根据你使用的驱动不同,有两种正确的多主机配置方式:

1. 使用lib/pq驱动

重复声明host参数,每个主机对应一个host键值对:

user=username password=password host=host1 host=host2 host=host3 port=5432 database=db_aob sslmode=prefer target_session_attrs=read-write

如果各主机端口不同,也需要分别声明port参数,比如port=5432 port=5433 port=5434。

2. 使用pgx驱动

除了支持重复host参数的写法外,还支持hosts(复数)字段,用逗号直接分隔主机名(无空格):

user=username password=password hosts=host1,host2,host3 port=5432 database=db_aob sslmode=prefer target_session_attrs=read-write

内容的提问来源于stack exchange,提问作者chirzul.maula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 11:36:06