运行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
当我启动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/