2017-06-30 1378 views
3

我收到以下错误,当我运行create extension postgis;创建PostGIS的延伸:“错误:无法打开扩展控制文件”

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

我使用使用安装的Postgres 9.6.3和2.3.2的PostGIS OS X El Capitan上的Homebrew。

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?,一个d试图使用顶部答案中给出的命令重新加载postgresql,但我仍然看到psql (9.6.3, server 9.6.1)。另外,我相信我的问题是不同的,因为它正在寻找/Library中的扩展控制文件,而不是/usr/local/Cellar

任何帮助,将不胜感激。

+0

也许[这个答案](https://stackoverflow.com/a/25467873/7925366)会帮助你。 –

+0

@ michel.milezzi这正是我所尝试的,但它无法创建扩展。 – Fiona

+0

好吧@菲奥娜,所以最后为你工作的是什么? – abbood

回答

0

我有一个类似的问题与详细here。当Postgres控制台中提到服务器时,这意味着您引用的是较旧的代码库。停止该服务器并使用以下命令启动正确的服务器。

$ brew services list 

这会给你一个正在运行的数据库服务器的列表。

$ brew services stop [email protected]<older-version> 
$ brew services start postgresql 
0

当您尝试安装postgis时,它会安装最新版本的postgresql以及它作为依赖关系。 所以,如果你安装的Postgres @ V(其中V是用户想要的版本)

brew install [email protected]

后运行此命令

brew install postgis

它将安装postgres10.1或什么是最新的。 所以之后,如果运行

create extension postgis;

在PostgreSQL @ v更高的IT将尝试检查其扩展目录,它不会找到扩展目录postgis.control因为这PostGIS的安装在PostgreSQL的版本扩展文件夹与此一起安装。

为了解决这个问题,你必须创建PostGIS中的给定安装一个符号链接到所需的PostgreSQL @ V

这个例子对PostgreSQL @ 9。6

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的帮助。