我升级并随后重新安装PostGIS& OS X Mountain Lion上的PostgreSQL。尝试使用PostGIS扩展时,收到以下错误:
ERROR: could not open extension control file "/usr/local/Cellar/postgresql/
9.2.3/share/postgresql/extension/postgis.control": No such file or directory
似乎PostGIS(和PostgreSQL以及??)仍在/postgresql/9.2.3/
目录中查找所需文件,而不是/postgresql/9.2.4/
目录中。我使用Homebrew通过以下命令删除所有以前版本的PostgreSQL:
brew remove --force postgresql
有人可以指出我正确的方向,为什么会出现这个问题? (某处或某处必须有一个挥之不去的配置文件?)
任何帮助将不胜感激。
答案 0 :(得分:12)
问题是您在代码库的9.2.3版上运行了psql服务器。要测试这个,请加载一个psql控制台,你应该在顶部看到这个:
psql (9.2.4, server 9.2.3)
Type "help" for help.
请注意上面的“服务器9.2.3”注释。如果您运行的服务器版本正确,您会看到:
psql (9.2.4)
Type "help" for help.
要解决此问题,请按照brew info postgresql
给出的关于卸载和加载LaunchAgent的说明进行操作 - 这将使用新代码重新启动服务器:
To reload postgresql after an upgrade:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
答案 1 :(得分:1)
Homebrew的设计通常是在remove
或upgrade
期间保留用户可编辑的配置文件和生成的数据文件,因此它们会在版本之间保留。听起来你是对的,这是一个配置文件留在某处。
/usr/local/etc
中没有postgres的全局配置文件。所以它可能是用户数据文件。您是否使用以前版本的postgres创建了任何数据库并在其中使用postgis扩展?这些数据库中的配置文件可能是指旧的postgres版本。这些数据库通常位于/usr/local/var/postgres
之下。看看那里的.conf文件,看看你是否可以编辑它们来修复扩展路径或重新创建数据库。
答案 2 :(得分:1)
我刚刚遇到了同样的问题,在这些解决方案没有解决之后,我找到了自己的一个:
brew uninstall postgis && brew install postgis
这项工作的关键在postgis的构建输出中突显出来:
==> ./configure --with-projdir=/usr/local --with-jsondir=/usr/local/opt/json-c --with-pgconfig=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config --disable-nls
请注意,它使用pg_config,很可能是为了确定扩展所需的所有文件所需的位置。
答案 3 :(得分:1)
在终端,我跑了
$ psql
在psql中,它向我显示了这个
> psql (9.6.3, server 9.5.7)
> Type "help" for help.
我试图运行以下
> CREATE EXTENSION postgis;
并收到此错误消息
> ERROR: could not open extension control file "/usr/local/Cellar/postgresql@9.5/9.5.7/share/postgresql@9.5/extension/postgis.control": No such file or directory
我通过
退出psql> \q
然后跑
$ brew services list
然后返回以下结果
Name Status User Plist
mysql stopped
mysql@5.6 stopped
postgresql stopped
postgresql@9.5 started doquyena /Users/doquyena/Library/LaunchAgents/homebrew.mxcl.postgresql@9.5.plist
redis stopped
我发现我的psql在不兼容的psql服务器上运行,所以我用以下命令更正了它
$ brew services stop postgresql@9.5
$ brew services start postgresql
当我回到psql
时$ psql
它现在显示了这表示我现在在匹配的服务器上
> psql (9.6.3)
> Type "help" for help.
因此,当我尝试再次创建扩展时没有错误消息
> CREATE EXTENSION postgis;
然后我就可以创建像这样的postgis数据表而没有任何问题
> CREATE TABLE s_test(geom geometry);