带dbname的pg_dump - 端口号无效?

时间:2017-10-02 09:57:55

标签: postgresql postgresql-9.4 pg-dump

dbname参数与pg_dump.exe一起使用时,出现以下错误:

错误:

  

pg_dump:[archiver(db)]与数据库“my_database”的连接失败:   无效的端口号:   “mypass@my_server.postgres.database.azure.com:5432 / MY_DATABASE”

命令:

pg_dump.exe --dbname=postgresql://my_user@my_server:mypass@my_server.postgres.database.azure.com:5432/my_database

我认为这是由于用户名中的“@”。但是没有提供服务器/主机,我得到了这个:

  

pg_dump:[archiver(db)]与数据库“my_database”的连接失败:致命错误:指定的用户名无效。请检查       用户名和重试连接。用户名应采用格式。       致命错误:指定的用户名无效。请检查用户名并重试连接。用户名应采用格式化。

1 个答案:

答案 0 :(得分:3)

尝试连接字符串(使用urlencoded值而不是@),例如:

t=# create user "us@r" password 'a@a';
CREATE ROLE
t=# grant CONNECT ON DATABASE t TO "us@r";
GRANT
t=# grant all on a to "us@r";
GRANT
t=# \! pg_dump -d "postgres://us%40r:a%40a@localhost:5432/t" -t a -s | head -n 3
--
-- PostgreSQL database dump
--