Оболочка сторонних данных "postgres_fdw" не существует (даже если она существует) - PullRequest
0 голосов
/ 20 апреля 2020

Использование PostgreSQL 10.10, от суперпользователя postgres:

CREATE EXTENSION postgres_fdw;
GRANT USAGE ON FOREIGN DATA WRAPPER postgres_fdw TO my_user;

Затем при выполнении следующих действий из my_user:

CREATE SERVER my_server
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (...);

Отображается это сообщение об ошибке:

Query 1 ERROR: ERROR:  foreign-data wrapper "postgres_fdw" does not exist

Вот список активных в настоящее время сторонних упаковщиков данных (от psql):

postgres=# \dew
                      List of foreign-data wrappers
     Name     |  Owner   |       Handler        |       Validator
--------------+----------+----------------------+------------------------
 postgres_fdw | postgres | postgres_fdw_handler | postgres_fdw_validator
(1 row)

Как получится, даже после предоставления USAGE пользователю my_user по-прежнему не может видеть / использовать оболочку посторонних данных postgres_fdw, как будто последняя не существует? Нужно ли больше шагов?

1 Ответ

1 голос
/ 20 апреля 2020

Поскольку сторонние упаковщики данных не живут в схеме, единственное объяснение состоит в том, что CREATE EXTENSION и CREATE SERVER выполнялись в разных базах данных (сторонние упаковщики данных не являются «глобальными объектами»). Вы должны выполнить эти операторы в одной и той же базе данных.

Кстати, явное CREATE FOREIGN DATA WRAPPER приведет к ошибке, так как расширение для внешних данных с таким именем уже создано расширением.

...