URI连接字符串可能非常复杂,这里提供一个标准的例子:
createdb "postgresql://postgres:postgres@localhost:5432/sandbox"
当然,它不能与createdb一起使用(“template1:FATAL”),这就是问题所在。该URI与
psql
完美配合,例如。 psql "postgresql://postgres:postgres@localhost:5432/postgres"
我正在寻找符合预期行为的任何内容,即使命令名称不是createdb
。
PS1:在我的环境中,即使对于postgres
用户,也有密码等信息,并且所有我的脚本都使用URI连接字符串标准,不再使用-U
等选项。这个问题的重点是URI标准。使用现代客户端和连接,v9+。
PS2:作为传统和哲学,我们期望PostgreSQL提供的命令具有正交行为。psql
和pg_dump
关于URI是正交的;psql
、pg_dump
和createdb
关于-U
选项是正交的... 我希望URI的使用也有一些正交性... 或者存在架构缺陷?
psql
(v12生态系统)和这些古老的命令之间存在规范不一致。每个命令规范中都必须承诺URI。附注:你的答案是正确的,在这里只有哲学讨论。 - Peter Krauss--maintenance-db=dbname
。请参见Postgres Weekly下的“Tom Lane pushed:” 。有几个与连接字符串相关的提交。 - Adrian Klaver