创建Postgis扩展:"错误:无法打开扩展控制文件"

Fio*_*ona 9 postgresql postgis

我跑的时候收到以下错误 create extension postgis;

ERROR: could not open extension control file "/Library/PostgreSQL/9.6/share/postgresql/extension/postgis.control": No such file or directory

我在OS X El Capitan上使用Homebrew安装了Postgres 9.6.3和PostGIS 2.3.2.

mdfind -name postgis.control 说明:

/usr/local/Cellar/postgis/2.3.2/share/postgresql/extension/postgis.control

brew info postgis 说明:

PostGIS extension modules installed to:
/usr/local/share/postgresql/extension
Run Code Online (Sandbox Code Playgroud)

当我启动Postgres控制台时,我看到:

psql (9.6.3, server 9.6.1)
Run Code Online (Sandbox Code Playgroud)

我读了一个类似的问题,PostGIS Homebrew安装引用了一条旧路径?,并尝试使用顶部答案中给出的命令重新加载postgresql,但我仍然看到psql (9.6.3, server 9.6.1).此外,我相信我的问题是不同的,因为它正在寻找扩展控制文件,/Library而不是/usr/local/Cellar.

任何帮助,将不胜感激.

abb*_*y37 8

当您尝试安装 postgis 时,它会安装最新版本的 postgresql 作为依赖项。因此,如果您安装了 postgres@V (其中 V 是用户所需的版本)

brew install postgresql@V

稍后你运行这个命令

brew install postgis

它将安装 postgres10.1 或任何最新版本。所以在那之后如果运行

create extension postgis;

在 postgresql@V 中,它会尝试检查它的扩展目录,但它不会在扩展目录中找到 postgis.control,因为这个 postgis 安装在与它一起安装的 postgresql 版本的扩展文件夹中。

要解决此问题,您必须从给定的 postgis 安装创建一个符号链接到所需的 postgresql@V

postgresql@9.6 的这个例子

ln -s  /usr/local/share/postgresql/extension/postgis* /usr/local/Cellar/postgresql@9.6/9.6.6/share/postgresql@9.6/extension/
ln -s /usr/local/lib/postgresql/postgis-2.3.so /usr/local/Cellar/postgresql@9.6/9.6.6/lib/postgis-2.3
ln -s /usr/local/lib/postgresql/rtpostgis-2.3.so /usr/local/Cellar/postgresql@9.6/9.6.6/lib/
Run Code Online (Sandbox Code Playgroud)

在运行这些命令之前,请检查系统中的 postgresql 版本和文件路径

感谢这个要点的帮助。


Gwe*_* Au 5

我在这里遇到了类似的问题,并提供了完整的详细信息。当您的 Postgres 控制台中提到服务器时,这意味着您正在引用较旧的代码库。使用以下命令停止该服务器并启动正确的服务器。

$ brew services list
Run Code Online (Sandbox Code Playgroud)

这将为您提供正在运行的数据库服务器的列表。

$ brew services stop postgresql@<older-version>
$ brew services start postgresql
Run Code Online (Sandbox Code Playgroud)