Postgres:找不到“postgres”

时间:2017-11-30 13:43:35

标签: sql postgresql mapping postgres-fdw

我已连接到架构'apm'

尝试执行函数并获得以下错误:

ERROR: user mapping not found for "postgres"

数据库连接信息说:apm on postgres @ PostgreSQL 9.6

psql版本:PostgreSQL 9.6.3,由Visual C ++ build 1800,64位编译

如何解决此错误。谢谢。

3 个答案:

答案 0 :(得分:6)

这意味着您正在尝试使用外部表,并且您的角色(在这种情况下为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

答案 1 :(得分:2)

https://www.postgresql.org/docs/current/static/sql-createusermapping.html

  

创建用户映射 - 定义用户到外部的新映射   服务器

您的函数使用某些服务器查询您需要用户映射的外部表。显然它存在于用户所有者,而不是你。或者只是使用已创建用户映射的用户运行该功能。

您可以使用以下方式查看它们:

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;

答案 2 :(得分:0)

如果要为所有用户创建用户映射,则可以这样做

RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
            max_depth=90, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=5, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=None,
            oob_score=False, random_state=None, verbose=0,
            warm_start=False)