这个想法是我有一个名为 的本地数据库northwind
,并且postgres_fdw
我想连接另一个名为test
localhost 的数据库(远程连接模拟,例如当我的数据库中的表被更新时,在其他数据库中执行某些操作,例如保存到历史记录等。 )。所以我打开 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 III 中存在的唯一角色)。然后我创建了外表:
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')
没关系,我可以schema/foreign tables
在 PgAdmin III 中找到它。但是当我尝试时,SELECT * FROM groups
我得到了:
********** ERROR**********
ERROR: could not connect to server "app_db"
SQL State: 08001
是否有可能是因为当我CREATE SERVER app_db..
不使用 localhost 服务器名称时?我不能,因为它的名称带有空格(PostgreSQL 9.3),并且在创建时会导致一些奇怪的问题。先感谢您。
更新:即使我在本地主机上创建另一个名为`app_db 的服务器,它也不起作用。