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

Azure托管PostgreSQL用户名含@时执行pg_dump报错问题咨询

问题原因

PostgreSQL连接URI的解析逻辑会把第一个未转义的@符号作为认证信息(用户名+密码)和主机地址的分隔符,你用户名自带的@someserver_in_short中的@没有做编码,会被误识别成分隔符,导致后续的密码、主机地址、端口字段全部解析错位,最终报端口字段格式错误。

最简解决方案

直接把用户名里的@做URL编码,替换为%40即可,不需要调整其他用法。
修改后的连接字符串如下:

MY_DB=postgres://somename%40someserver_in_short:somepassword@someserver_in_long:5432/dbname?sslmode=require

修改完成后直接执行原来的导出命令就可以正常运行:

pg_dump $MY_DB > file.sql

备选方案(无需修改连接字符串)

如果不想调整URI格式,也可以直接拆分参数执行pg_dump命令,显式指定各连接参数:

# 先设置密码避免交互输入
export PGPASSWORD=somepassword
# 执行导出
pg_dump -h someserver_in_long -p 5432 -U "somename@someserver_in_short" -d dbname sslmode=require > file.sql

补充说明

如果你的密码中也包含@、:、/、?这类URI保留字符,同样需要做URL百分号编码后再写入连接URI。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:45:05