我正在使用postgres,我创建了db,用户,密码,这是密码:
密码= name&text@sob
我正在使用以下命令来转储数据库,它可以在我拥有的其他数据库上运行:
pg_dump -Fc --no-acl --no-owner --dbname=postgresql://db_user:password@127.0.0.1:5432/db_name
但是在使用包含&和的密码的DB时它不起作用@:
pg_dump -Fc --no-acl --no-owner --dbname=postgresql://db_user:name&text@sob@127.0.0.1:5432/db_name
由于密码&和@密码不起作用- 所以我逃脱了&,\但它没有工作@- 任何建议?
谢谢
您可以直接在连接字符串中对符号进行编码,无需担心额外的 URL 参数。
\n\n--dbname=postgresql://db_user:name%26te\xe2\x80\x8c\xe2\x80\x8bxt%40sob@127.0.0.1:5432/db_nam\xe2\x80\x8c\xe2\x80\x8be\nRun Code Online (Sandbox Code Playgroud)\n
添加?password=name%26te??xt%40sob为 uri 参数应该做:
pg_dump -Fc --no-acl --no-owner --dbname=postgresql://db_user:password@127.0.0.1:5432/db_name?password=name%26te??xt%40sob
Run Code Online (Sandbox Code Playgroud)
根据https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING
URI 的分层部分的组件也可以作为参数给出。
更新
正如 Roko 所注意到的,必须对 URL 进行编码