我正在尝试使用 FDW 在本地的 postgres 数据库之间创建链接。这是我创建此链接的代码:
CREATE EXTENSION IF NOT EXISTS postgres_fdw;
CREATE SERVER IF NOT EXISTS TEST_SERVER FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '127.0.0.1', dbname 'TestDatabase', port '5432');
CREATE USER MAPPING IF NOT EXISTS FOR postgres SERVER TEST_SERVER OPTIONS (user 'postgres', password 'postgres');
CREATE FOREIGN TABLE IF NOT EXISTS TEST_PUBLIC.TEST_TABLE(
ID INT NOT NULL,
VALUE VARCHAR(11) NOT NULL
) SERVER TEST_SERVER;
TEST 表存在于 TestDatabase 上,并且 test_public 模式存在于我正在创建 FDW 的当前数据库上。当我最初创建并测试它时,我可以看到没有问题的对象,但是我的开发过程的一部分(对于这个特定项目)是删除当前的所有对象并从头开始重新运行,所以当我们将它移动到我们知道从头到尾的新环境一切都很稳固。
我遇到的问题是我再也看不到外部表“TEST_TABLE”。
当我运行这个:
SELECT * FROM information_schema.tables WHERE table_schema = 'test_public'
我得到以下返回:
table_catalog table_schema table_name table_type
TestDatabase test_public test_table FOREIGN
但是当我从表 test_public.test_table 中选择时,我得到以下错误:
relation "test_public.test_table" does not exist
在此过程中,我能够弄清楚我的所有问题,但即使在逐步运行此操作而不是完整部署之后,我似乎也无法再访问外部表了。关于我缺少什么的任何建议?