调用 psql 命令而不选择任何数据库

调用 psql 命令而不选择任何数据库

命令行客户端的语法psql

psql [option...] [dbname [username]]

我正在将命令传递ALTER DATABASE x RENAME to y给该命令:

echo `ALTER DATABASE x RENAME to y` | psql

目前我收到错误

psql: FATAL:  database "myuser" does not exist

该命令似乎psql尝试打开与当前用户名同名的数据库。

如何psql在不选择任何数据库的情况下启动命令?

编辑

当然,解决方法就是为用户创建一个空数据库。

使用数据库x作为参数不起作用,因为这会阻止重命名。

答案1

尝试设置数据库psql -d postgres::

echo `ALTER DATABASE x RENAME to y` | psql -d postgres

“template1”或“postgres”应该可用。

https://stackoverflow.com/questions/4483139/php-how-do-i-connect-to-postgresql-without-specifying-database-name

答案2

在 Ubuntu 中:

sudo -u postgres psql
postgres=# ALTER DATABASE "old" RENAME TO "new";
ALTER DATABASE
postgres=# \q

相关内容