运行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.controlbrew info postgis显示:

PostGIS extension modules installed to:
/usr/local/share/postgresql/extension

当我启动Postgres控制台时,我看到:
psql (9.6.3, server 9.6.1)

我读了一个类似的问题PostGIS Homebrew installation referencing an old path?,并尝试使用顶部答案中给出的命令重新加载postgresql,但是我仍然看到psql (9.6.3, server 9.6.1)。另外,我认为我的问题有所不同,因为它在/Library中而不是/usr/local/Cellar中寻找扩展控制文件。

任何帮助,将不胜感激。

最佳答案

当您尝试安装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的符号链接(symbolic link)。

这个例子适用于[email protected]

ln -s  /usr/local/share/postgresql/extension/postgis* /usr/local/Cellar/[email protected]/9.6.6/share/[email protected]/extension/
ln -s /usr/local/lib/postgresql/postgis-2.3.so /usr/local/Cellar/[email protected]/9.6.6/lib/postgis-2.3
ln -s /usr/local/lib/postgresql/rtpostgis-2.3.so /usr/local/Cellar/[email protected]/9.6.6/lib/

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

感谢this gist的帮助。

关于postgresql - 创建Postgis扩展名: "ERROR: could not open extension control file",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44851761/

10-15 04:02