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

如何移除Azure PostgreSQL用户名中的@符号?

解决Azure PostgreSQL连接URL中双@符号的解析问题

嘿,这个坑我之前踩过!Azure PostgreSQL自动生成的user@databasename格式用户名,直接塞进URL连接字符串里确实会因为两个@符号导致Node.js、Ruby这类语言的数据库驱动解析失败——驱动会把第一个@后面的部分都当成用户名的一部分,把主机地址识别错。

这里有两个靠谱的解决办法:

1. URL编码用户名里的@符号

把用户名中的@替换成URL编码后的%40,这样整个连接URL里就只有一个用于分隔「用户名密码」和「主机地址」的@符号了。

修改后的连接字符串示例:

postgres://user%40databasename:your_password@host.azure.com:5432/database_name?ssl=true

驱动就能正确解析出用户名是user@databasename,主机是host.azure.com了。

2. 使用配置对象替代URL字符串

更稳妥的方式是直接用驱动支持的配置对象来建立连接,完全避开URL拼接的问题,代码可读性也更高。

Node.js(pg库)示例:

const { Pool } = require('pg');

const pool = new Pool({
  user: 'user@databasename', // 直接用原始用户名
  host: 'host.azure.com',
  database: 'database_name',
  password: 'your_password',
  port: 5432,
  ssl: true
});

Ruby(pg gem)示例:

require 'pg'

conn = PG.connect(
  user: 'user@databasename', // 直接用原始用户名
  host: 'host.azure.com',
  dbname: 'database_name',
  password: 'your_password',
  port: 5432,
  sslmode: 'require'
)

这两种方法都能完美解决双@符号导致的解析错误,个人更推荐第二种,因为不用手动处理编码,出错概率更低~

内容的提问来源于stack exchange,提问作者Guillermo Siliceo Trueba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:55:50