无法连接到国外服务器

问题描述 投票:0回答:1

我在 PostgreSQL 上遇到以下错误:

SQL Error [08001]: ERROR: could not connect to server "regionaldb_server"
  Detail: connection to server at "localhost" (127.0.0.1), port 5404 failed: Connection refused

以下是在本地数据库上创建外部服务器设置的设置:

CREATE EXTENSION IF NOT EXISTS postgres_fdw;

CREATE SERVER regionaldb_server
                  FOREIGN DATA WRAPPER postgres_fdw
                  OPTIONS (host 'localhost', dbname 'platform_test', port '5404');

CREATE USER MAPPING FOR current_user
                  SERVER regionaldb_server
                  OPTIONS (user 'admin', password 'nimda');

CREATE FOREIGN TABLE "users-meta_foreign" (
              id uuid,
              email VARCHAR(500),
              phone VARCHAR(10),
              "internationalCode" VARCHAR(5),
              region VARCHAR(255) NOT NULL,
              "userRoles" TEXT NOT NULL,
              "createdAt" timestamptz NOT NULL,
              "updatedAt" timestamptz NOT NULL,
              "deletedAt" timestamptz
          )
          SERVER regionaldb_server
          OPTIONS (schema_name 'platform.public', table_name 'users-meta');

以下语句给出了上述错误:

INSERT INTO "public"."users-meta_foreign" ("id", "createdAt", "updatedAt", "deletedAt", "email", "phone", "internationalCode", "region", "userRoles") VALUES (DEFAULT, DEFAULT, DEFAULT, DEFAULT, $1, DEFAULT, DEFAULT, $2, $3) RETURNING "id", "createdAt", "updatedAt", "deletedAt";

请注意,外部服务器和源服务器都托管在同一台计算机上,但端口不同。

我尝试使用 DBeaver 客户端连接到外部服务器并且它工作正常。但是查询时的外部服务器连接不起作用。

预期: 查询是在外表上执行的。

database postgresql postgres-fdw
1个回答
0
投票

请提供更多信息。您的代码本身似乎是正确的,所以我认为您的系统或 psql 配置一定有问题。这是我对调试的建议:

确保 PostgreSQL 服务正在端口 5404 上运行。

查看监听端口命令:

netstat -plunt | grep 5404

使用psql测试与端口5404上的PostgreSQL实例的直接连接:

psql -h localhost -p 5404 -U admin -d platform_test

如果您可以使用 psql 连接,则确认 PostgreSQL 实例可以访问,并且问题可能与 FDW 设置或权限有关。

确保没有防火墙规则阻止与端口 5404 的连接

在 Linux 上您可以使用

sudo iptables -L
© www.soinside.com 2019 - 2024. All rights reserved.