将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”的连接失败:致命错误:指定的用户名无效。请检查 用户名和重试连接。用户名应采用格式。 致命错误:指定的用户名无效。请检查用户名并重试连接。用户名应采用格式化。
答案 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
--