运行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
中寻找扩展控制文件。
任何帮助都将不胜感激。
答案 0 :(得分:3)
我在完整详细信息here时遇到了类似的问题。在Postgres控制台中提到服务器时,这意味着您引用了较旧的代码库。停止该服务器并使用以下命令启动正确的服务器。
$ brew services list
这将为您提供正在运行的数据库服务器列表。
$ brew services stop postgresql@<older-version>
$ brew services start postgresql
答案 1 :(得分:2)
当您尝试安装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/
在运行这些命令之前,请检查系统中的postgresql版本和文件路径
感谢this gist寻求帮助。