我在 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 客户端连接到外部服务器并且它工作正常。但是查询时的外部服务器连接不起作用。
预期: 查询是在外表上执行的。
请提供更多信息。您的代码本身似乎是正确的,所以我认为您的系统或 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