【发布时间】:2015-04-27 16:06:55
【问题描述】:
我的想法是我有一个名为 northwind 的本地数据库,并且使用 postgres_fdw 我想在 localhost 上连接另一个名为 test 的数据库(远程连接模拟,例如当我的数据库中的表被更新时,在其他数据库中执行某些操作,例如保存到历史记录等。)。所以我打开 psql 控制台并输入:
CREATE SERVER app_db
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (dbname 'test', host 'localhost:5432');
正如我在A Look at Foreign Data Wrappers 链接中找到的。接下来我也跟着教程走:
CREATE USER MAPPING for postgres
SERVER app_db
OPTIONS (user 'postgres', password 'postgres');
(我假设用户和密码应该与我使用的相同,例如在 Hibernate 中访问数据库,在我的情况下,教程中的 current_user 是 postgres,因为这是我的 PgAdmin 中存在的唯一角色三)。
然后我创建了外表:
CREATE FOREIGN TABLE groups
(
id serial NOT NULL,
name character varying(255) NOT NULL,
version integer DEFAULT 0
)
SERVER app_db OPTIONS (table_name 'groups')
没关系,我可以在 PgAdmin III 的 schema/foreign tables 中找到它。但是当我尝试SELECT * FROM groups 时,我得到了:
********** ERROR**********
ERROR: could not connect to server "app_db"
SQL State: 08001
可能是因为当我CREATE SERVER app_db.. 我不使用本地主机服务器名称时?我不能,因为它的名称带有空格(PostgreSQL 9.3),并且在创建时会导致一些奇怪的问题。先感谢您。
更新:即使我在 localhost 上创建另一个名为`app_db 的服务器,它也不起作用。
【问题讨论】:
标签: database postgresql postgresql-9.3 pgadmin foreign-data-wrapper