[英]Postgres: user mapping not found for “postgres”
我已连接到架构apm
。
尝试执行一个函数并得到以下错误:
ERROR: user mapping not found for "postgres"
数据库连接信息说:
apm on postgres@PostgreSQL 9.6
psql version: PostgreSQL 9.6.3, compiled by Visual C++ build 1800, 64-bit
如何解决这个错误?
这意味着您正在尝试使用外部表并且您的角色(在本例中为postgres
)没有为远程服务器定义用户和密码。
您可以通过执行这样的查询来添加它:
CREATE USER MAPPING
FOR postgres
SERVER remote_server_name
OPTIONS (user 'bob', password 'secret');
您可以像这样获取表的服务器名称:
SELECT srvname
FROM pg_foreign_table t
JOIN pg_foreign_server s ON s.oid = t.ftserver
WHERE ftrelid = 'schemaname.tablename'::regclass
https://www.postgresql.org/docs/current/static/sql-createusermapping.html
CREATE USER MAPPING — 定义用户到外部服务器的新映射
您的函数使用一些需要用户映射的服务器查询外部表。 显然它是为用户所有者而存在的,而不是为您而存在的。 或者只是与创建了用户映射的用户一起运行该函数。
您可以通过以下方式查看它们:
SELECT um.*,rolname
FROM pg_user_mapping um
JOIN pg_roles r ON r.oid = umuser
JOIN pg_foreign_server fs ON fs.oid = umserver;
如果你想为所有用户创建用户映射,你可以这样做
CREATE USER MAPPING
FOR PUBLIC
SERVER remote_server_name
OPTIONS (user 'bob', password 'secret');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.