调用pg_recvlogical时如何使用完整连接字符串?
pg_recvlogical 使用完整连接字符串绕过密码提示的问题
问题描述
我正在构建使用pg_recvlogical的自动化程序,却无法弄清如何使用完整连接字符串绕过密码提示。尝试了以下写法:
pg_recvlogical postgresql://root:<redacted>@graph-node-db.cluster-cpyibfvmddkk.us-west-2.rds.amazonaws.com/goldsky --slot migration_goldsky --start -f file.sql
但持续收到错误:
pg_recvlogical: error: too many command-line arguments (first is "postgresql://root:<redacted>@graph-node-db.cluster-cpyibfvmddkk.us-west-2.rds.amazonaws.com/goldsky") Try "pg_recvlogical --help" for more information.
想知道是否可以像psql一样,使用完整连接字符串调用pg_recvlogical?
解决方案
可以使用完整连接字符串,但必须加上-d(或--dbname)参数来指定连接字符串——pg_recvlogical不像psql那样支持直接把连接字符串作为位置参数传递。
正确的命令写法:
pg_recvlogical -d postgresql://root:<redacted>@graph-node-db.cluster-cpyibfvmddkk.us-west-2.rds.amazonaws.com/goldsky --slot migration_goldsky --start -f file.sql
原因在于pg_recvlogical的命令行参数规则:连接相关的参数需要通过选项明确指定,而非直接作为位置参数传入。如果省略-d,程序会把连接字符串判定为多余的位置参数,从而抛出错误。
如果不想在连接字符串中明文写密码,还可以通过环境变量PGPASSWORD传递密码,更适合自动化脚本场景:
PGPASSWORD=<redacted> pg_recvlogical -d postgresql://root@graph-node-db.cluster-cpyibfvmddkk.us-west-2.rds.amazonaws.com/goldsky --slot migration_goldsky --start -f file.sql
内容的提问来源于stack exchange,提问作者Paymahn Moghadasian
相关产品推荐
相关产品推荐

