【问题标题】:pg_dump using connection string failed使用连接字符串的 pg_dump 失败
【发布时间】:2022-11-02 23:21:57
【问题描述】:

在我的 mac OS 机器上,在 bash 中,pg_dump 使用连接字符串工作正常。

pg_dump postgresql://<db_username>:<db_password>@<host>:5432/<db_name> --file=/Users/dump1234.tar --encoding=utf8 --format=t

其中<db_password> 以“@”字符结尾,并且几乎没有特殊字符。

但是,在我的 Windows 10 机器上,在 bash 中,使用相同的连接字符串给出错误。

【问题讨论】:

  • 密码中的@ 可能有问题。

标签: postgresql windows pg-dump


【解决方案1】:

语法记录在Connection Strings

密码中的@ 字符需要替换为%40

此外,bash 会将未引用的 # 解释为注释的开头,将未引用的 ! 解释为事件指示符。避免这些解释的最简单方法是将整个 URI 放在单引号内:

pg_dump 'postgresql://thilllon:l2k2lllk2j3!%40!#$%40!!!%40@myproject.postgres.database.azure.com:5432/project1'

【讨论】:

  • 有用!谢谢。顺便说一句,您知道为什么它可以在我的 Mac 上运行吗?实际上,sharp('#') 不在密码中,但感叹号('!')在密码中。
  • @thilllon:也许 Mac 上的默认 shell 不是 bash?但是对于密码中的“@”,它与“@”作为主机的分隔符冲突,所以我希望这在任何平台上都会失败。
猜你喜欢
  • 2017-11-24
  • 2013-07-04
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
相关资源
最近更新 更多