我正在尝试设置一个PostgreSQL外部数据 Package 器,并从current_settings
访问凭据,这样它们就不会在我的源代码中硬编码。
下面是我的代码:
CREATE EXTENSION postgres_fdw;
CREATE SERVER remote_server
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (
host current_setting('db.REMOTE_DB_HOST'),
port current_setting('db.REMOTE_DB_PORT'),
dbname current_setting('db.REMOTE_DB_NAME')
);
手之前,我已把国书中的话设定为这样:
SET db.REMOTE_DB_HOST='localhost';
SET db.REMOTE_DB_PORT='5432';
SET db.REMOTE_DB_NAME='remotedb';
现在,我可以毫无问题地得到这些值:
SELECT current_setting('db.REMOTE_DB_HOST') AS host, current_setting('db.REMOTE_DB_PORT') AS port, current_setting('db.REMOTE_DB_NAME') AS dbname;
产生预期的
host | port | dbname
-----------+------+----------
localhost | 5432 | remotedb
但是,当我尝试建立remote_server连接时,我得到了以下错误,没有任何其他详细信息:
ERROR: syntax error at or near "current_setting"
LINE 4: host current_setting('db.REMOTE_DB_HOST'),
1条答案
按热度按时间am46iovg1#
DDL命令不允许插入。您无法在
CREATE SERVER
命令内执行命令,只能传递常值常数。请连接命令字串并执行。可以在
DO
命令中将动态SQL与EXECUTE
一起使用:相关: