与包含 (@) 的用户名一起使用并使用 URL 时出现 psql 错误
psql error when used with username containing at (@) and using URL
我正在尝试使用 CLI (psql) 连接到我的 PostgreSQL 11.3 服务器。我需要在命令行中设置密码(不能使用环境变量 PGPASSWORD
)。
我正在尝试使用 URL 来访问这样的数据库:
psql postgresql://username@server:password@server.full.name:5432/db_name
如您所见,我的登录名中包含 at (@
),例如我的登录名是:username@server
.
我收到错误:
psql: Invalid port number: "password@server.full.name:5432/db_name"
我想 psql CLI 首先在 (@
) 处解析为用户名和服务器名称之间的分隔符。是 psql CLI 错误吗?
如何在URL中传递这样的用户名(包含@
)以正确启动psql?
谢谢!
更新 1:
我的同事建议在登录名和密码之间使用 %40
而不是冒号 :
,如下所示:
psql postgresql://username@server%40password@server.full.name:5432/db_name
但是这个没有效果(我用的是Windows10,cmd.exe)
经过一番调查,我找到了一个解决方案(为了其他人的利益):
psql postgresql://username%40server:password@server.full.name:5432/db_name
如果您从 cmd
或 bat
文件启动它,请屏蔽百分号 (%
),如下所示:
psql postgresql://username%%40server:password@server.full.name:5432/db_name
我正在尝试使用 CLI (psql) 连接到我的 PostgreSQL 11.3 服务器。我需要在命令行中设置密码(不能使用环境变量 PGPASSWORD
)。
我正在尝试使用 URL 来访问这样的数据库:
psql postgresql://username@server:password@server.full.name:5432/db_name
如您所见,我的登录名中包含 at (@
),例如我的登录名是:username@server
.
我收到错误:
psql: Invalid port number: "password@server.full.name:5432/db_name"
我想 psql CLI 首先在 (@
) 处解析为用户名和服务器名称之间的分隔符。是 psql CLI 错误吗?
如何在URL中传递这样的用户名(包含@
)以正确启动psql?
谢谢!
更新 1:
我的同事建议在登录名和密码之间使用 %40
而不是冒号 :
,如下所示:
psql postgresql://username@server%40password@server.full.name:5432/db_name
但是这个没有效果(我用的是Windows10,cmd.exe)
经过一番调查,我找到了一个解决方案(为了其他人的利益):
psql postgresql://username%40server:password@server.full.name:5432/db_name
如果您从 cmd
或 bat
文件启动它,请屏蔽百分号 (%
),如下所示:
psql postgresql://username%%40server:password@server.full.name:5432/db_name