Проблемы при создании с использованием расширения oracle_fdw в Windows
Я пытаюсь установить и использовать oracle_fdw в postgresql 9.6, однако я получаю одну и ту же проблему каждый раз, когда запускаю следующую команду:
create extension oracle_fdw;
ERROR: could not load library "D:/PostgreSQL/pg96/../pg96/lib/postgresql/oracle_fdw.dll":
The specified module could not be found.
Две вещи очень странные здесь:
папка, в которой она ищет dll, имеет ".." в середине, поэтому, похоже, она должна смотреть в
D:\PostgreSQL\pg96\lib
только, но у меня есть папкаD:\PostgreSQL\pg96\lib\postgresql
также.Я установил следующие переменные в системе, но, похоже, это не отражается в команде:
Path: D:\PostgreSQL\pg96\lib\;C:\Program Files\Oracle Instant Client\instantclient_12_2; D:\PostgreSQL\pg96\lib\postgresql
Ребята, вы можете мне помочь? Мне действительно нужны конкретные инструкции о том, как заставить это работать.
Tks!
3 ответа
..
на вашем пути странно, но не должно быть проблем. Каково значение параметра dynamic_library_path
?
Является oracle_fdw.dll
в D:/PostgreSQL/pg96/lib/postgresql
?
Я предполагаю что oci.dll
в C:\Program Files\Oracle Instant Client\instantclient_12_2
,
Вы проверили, что все задействованные программы (PostgreSQL, oracle_fdw и Oracle) являются либо 32-битными, либо 64-битными?
Если все в порядке, проблема должна быть в том, что oci.dll
не находится на пути поиска в общей библиотеке сервера PostgreSQL.
Вы уверены, что сервис PostgreSQL получил PATH
Задание тебе показать? Вы перезапустили PostgreSQL после того, как изменили PATH
переменная окружения?
Многие сталкиваются с этой проблемой, и я получил ее в большинстве случаев. Клиентские библиотеки Oracle компилируются с использованием определенной версии Visual C++. Поэтому нам необходимо иметь распространяемый пакет Visual C++ для этой конкретной версии Visual Studio. Вторая зависимость исходит от oracle_fdw.dll
, Последняя версия сообщества oracle_fdw.dll
подготовлен с использованием Visual C++ 2013. Таким образом, мы должны иметь распространяемый пакет Visual C++ 2013 для присутствия в системе. Как только все такие зависимости решены, это работает.
В качестве альтернативы, вы можете использовать oracle_fdw.dll
подготовлено проектом BigSQL. Поскольку проект построен с использованием MSYS2, нет никаких зависимостей от Visual C++. Однако нельзя избежать зависимости, создаваемой клиентскими библиотеками Oracle.
Это похоже на проблему с дистрибутивом Postgres, который вы используете, а не с самим oracle_fdw. Может быть, лучше обратиться к дистрибьюторам. Глядя на пути в ваших ошибках, я предполагаю, что вы используете дистрибутив Bigsql. Вы можете попробовать разместить вопрос на их странице обратной связи, они, как правило, довольно отзывчивы.