首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FDW在postgres的应用

FDW在postgres的应用
EN

Database Administration用户
提问于 2019-11-25 11:12:16
回答 1查看 756关注 0票数 0

我需要创建一个序列,并需要为两个不同服务器上的两个以上数据库使用用于自动增量id的序列。我指的是下面的文档(为了测试目的):https://paquier.xyz/postgresql-2/global-sequences-with-postgres_fdw和postgres-核心/

我遵循以下步骤:

代码语言:javascript
复制
    Server 1: 
CREATE DATABASE
postgres=# \c a1
You are now connected to database "a1" as user "postgres".
a1=# CREATE SEQUENCE seq;
CREATE SEQUENCE
a1=# CREATE VIEW seq_view AS SELECT nextval('seq') as a;
CREATE VIEW
a1=# \c postgres
You are now connected to database "postgres" as user "postgres".

postgres=# create database a2;
 CREATE DATABASE
 postgres=# \c a2;
You are now connected to database "a2" as user "postgres".
a2=# CREATE EXTENSION postgres_fdw;
CREATE EXTENSION
a2=# CREATE SERVER postgres_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS
a2-# (host '192.168.xx.xxx', port '5432', dbname 'a1');
CREATE SERVER
a2=# CREATE USER MAPPING FOR PUBLIC SERVER postgres_server OPTIONS (password 
'');
CREATE USER MAPPING
a2=# CREATE FOREIGN TABLE foreign_seq_table (a bigint) SERVER
a2-# postgres_server
a2-# OPTIONS (table_name 'seq_view');
CREATE FOREIGN TABLE
a2=# select * from foreign_seq_table;
 a
---
 1
(1 row)

a2=# select * from foreign_seq_table;
a
---
2
(1 row)

从上面的例子可以看出,它在同一服务器上的两个数据库上正常工作。但是,当我继续处理另一台服务器时,我在那里执行了以下步骤:

代码语言:javascript
复制
    postgres=# create database kbc;
CREATE DATABASE
 postgres=# \c kbc
You are now connected to database "kbc" as user "postgres".
kbc=#  CREATE EXTENSION postgres_fdw;
CREATE EXTENSION
kbc=# CREATE SERVER postgres_server FOREIGN DATA WRAPPER postgres_fdw 
OPTIONS
kbc-# (host '192.168.xx.xxx', port '5432', dbname 'a1');
CREATE SERVER
kbc=# CREATE USER MAPPING FOR PUBLIC SERVER postgres_server OPTIONS 
(password '');
CREATE USER MAPPING
kbc=#
kbc=# CREATE FOREIGN TABLE foreign_seq_table (a bigint) SERVER 
postgres_server OPTIONS (table_name 'seq_view');
  CREATE FOREIGN TABLE
 kbc=# select * from foreign_seq_table;
  ERROR:  could not connect to server "postgres_server"
    DETAIL:  fe_sendauth: no password supplied

我终于收到错误了。我在这里遗漏了什么/任何步骤吗?我可以轻松地从新服务器(我想使用该序列的地方)切换到旧服务器(在这里我创建了序列)。pg_hba.conf文件设置在两个服务器上--只有md5或信任项。还有其他我需要添加到配置文件中的条目吗?对于fdw跨不同服务器的任何建议文档也将是有帮助的。

提前感谢!

注意:由于某些应用需求,我不能使用UUID。这就是为什么我们需要一个自动增量数字列。它选择最高的id值。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-12-06 10:39:35

"fe_sendauth:没有提供密码“

外部服务器需要一个密码(大概是因为pg_hba.conf被设置为md5 ),而您并没有提供密码。- 贾尼

我修改了我的用户映射(从另一个服务器),并在那里提供了密码,并使它工作。就像下面,

代码语言:javascript
复制
CREATE USER MAPPING FOR PUBLIC SERVER postgres_server OPTIONS 
(user 'postgres' , password 'xxxxxxx');
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/254068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档