Postgresql 获取错误时会发生什么:role“;"富",;psql不存在吗?

Postgresql 获取错误时会发生什么:role“;"富",;psql不存在吗?,postgresql,Postgresql,我正在导入具有以下内容的数据库: sudo -u postgres psql mydb < mydb.bak sudo-u postgres psql mydb

我正在导入具有以下内容的数据库:

sudo -u postgres psql mydb < mydb.bak
sudo-u postgres psql mydb 我在控制台中多次出现以下错误:

错误:角色“foo”不存在


我想知道在这种情况下会发生什么。它是否正在使用另一个用户,如果是,是哪个用户?数据库所有者或可能只是postgres?

我猜您的
mydb.bak
来自另一个postgres集群/实例,其中有一个角色
foo
。我还想猜测,您要导入的集群没有这个角色。在这种情况下,您可能拥有分配给role
foo
的特权的对象,而在新数据库中没有这样的角色。然后你会看到你看到的错误。如果是这种情况,则需要手动将其添加到新集群/实例,或者在另一个实例上使用
pg_dumpall-g
来获取全局对象,其中包括角色。请注意,这将包括所有全局用户,因此您可能不需要。

使用
psql
-U
选项指定所需的数据库用户。@LaurenzAlbe I get
致命:用户“dev”的对等身份验证失败
使用
sudo-u postgres psql-u dev mydb
时,请适当更改
pg_hba.conf
并重新加载。如果您在
pg_hba.conf
中启用非对等登录(例如通过密码)。然后,您根本不需要sudo,可以直接使用
psql-U dev mydb