9

我在 OS X Mountain Lion 上升级并随后重新安装了 PostGIS 和 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

有人可以为我指出为什么会出现这个问题的正确方向吗?(一定有一个挥之不去的配置文件某处或什么?)

任何帮助都感激不尽。

4

4 回答 4

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
于 2013-07-29T08:22:57.457 回答
2

在终端,我跑了

$ 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);
于 2017-08-04T02:34:27.253 回答
1

Homebrew 的设计通常是在removeor期间保留用户可编辑的配置文件和生成的数据文件upgrade,因此它们在版本之间保留。听起来你是对的,它是一个配置文件留在某处。

中没有用于 postgres 的全局配置文件/usr/local/etc。所以它可能是用户数据文件。您是否使用以前版本的 postgres 创建了任何数据库并在其中使用了 postgis 扩展?这些数据库中的配置文件可能指的是旧的 postgres 版本。这些数据库通常位于/usr/local/var/postgres. 查看那里的 .conf 文件,看看您是否可以编辑它们以修复扩展路径或重新创建数据库。

于 2013-05-01T01:45:53.290 回答
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 很可能是为了确定它需要存储扩展所需的所有文件的位置。

于 2015-06-19T22:26:18.603 回答