PostgreSQL中的跨数据库连接问题

时间:2018-01-23 13:33:50

标签: postgresql postgresql-9.1

我试图使用Forigen Data Wrapper从A表中获取数据到另一个数据库。

它在我的系统中运行良好。但是相同的命令会在远程服务器中抛出错误。

CREATE FOREIGN DATA WRAPPER fwd_test VALIDATOR postgresql_fdw_validator;
CREATE SERVER ser_test FOREIGN DATA WRAPPER fwd_test OPTIONS (hostaddr '127.0.0.1', dbname 'database_one', port '5433');
CREATE USER MAPPING FOR postgres SERVER ser_test OPTIONS (user 'postgres', password 'emr123');
SELECT dblink_connect('ser_test');

服务器返回以下错误

ERROR: could not establish connection
SQL state: 08001
Detail: missing "=" after "ser_test" in connection info string

同一组行在本地实例中工作。

2 个答案:

答案 0 :(得分:0)

根据文档判断,dblink_connect()已扩展为在9.29.3之间接受外国服务器名称。

我猜测(基于问号标签)您的远程服务器正在运行9.1,但您的本地实例更新。

答案 1 :(得分:0)

您无需创建自己的外部数据包装器;该扩展程序为您创建一个名为postgres_fdw的链接。

您当然可以创建一个新的外部数据包装器对象,但正确的方法是这样的:

CREATE FOREIGN DATA WRAPPER fdw_test
  HANDLER postgres_fdw_handler
  VALIDATOR postgres_fdw_validator;

您忘记了处理程序,没有处理程序,外部数据包装器就不知道其代码在哪里。

你的PostgreSQL 9.1标签毫无意义,因为postgres_fdw是在9.3版本中添加的。