我需要创建一个序列,并需要为两个不同服务器上的两个以上数据库使用用于自动增量id的序列。我指的是下面的文档(为了测试目的):https://paquier.xyz/postgresql-2/global-sequences-with-postgres_fdw和postgres-核心/
我遵循以下步骤:
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)从上面的例子可以看出,它在同一服务器上的两个数据库上正常工作。但是,当我继续处理另一台服务器时,我在那里执行了以下步骤:
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值。
发布于 2019-12-06 10:39:35
"fe_sendauth:没有提供密码“
外部服务器需要一个密码(大概是因为pg_hba.conf被设置为md5 ),而您并没有提供密码。- 贾尼
我修改了我的用户映射(从另一个服务器),并在那里提供了密码,并使它工作。就像下面,
CREATE USER MAPPING FOR PUBLIC SERVER postgres_server OPTIONS
(user 'postgres' , password 'xxxxxxx');https://dba.stackexchange.com/questions/254068
复制相似问题