根据DOC我不能这样做。但完全重新创建表迫使我做大量的工作而不是简单的:
ALTER FOREIGN TABLE table_name ALTER SERVER new_server_name;
根据DOC我不能这样做。但完全重新创建表迫使我做大量的工作而不是简单的:
ALTER FOREIGN TABLE table_name ALTER SERVER new_server_name;
列出您的外国数据服务器并记下它:
select oid, * from pg_foreign_server
找到你的外表:
select oid, * from pg_class where relkind = 'f'
然后修改系统目录pg_foreign_table
,如:
update pg_foreign_table set ftserver = 11573931 where ftserver = 11573932 -- and ftrelid = YOUR_OID_RELID_FROM_PG_CLASS
不要使用这种方式更改服务器,因为它不会更新依赖表 pg_depend 并导致以后出现很多问题。
在 postgres 12 中,此命令可以正常工作,以更改用于外部数据库包装器的服务器 IP 地址
alter server YOUR_SERVER_NAME options (set host 'XX.XXX.XX.X');