【问题标题】:PostGIS Homebrew installation referencing an old path?PostGIS Homebrew 安装引用了旧路径?
【发布时间】:2013-04-22 07:29:30
【问题描述】:

我在 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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: postgresql postgis homebrew


    【解决方案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);
    

    【讨论】:

      【解决方案2】:

      我刚刚遇到了同样的问题,在这些解决方案没有解决它之后,我找到了自己的一个:

      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】:

        问题是你有一个在 9.2.3 版本的代码库上运行的 psql 服务器。要对此进行测试,请加载一个 psql 控制台,您应该会在顶部看到:

        psql (9.2.4, server 9.2.3)
        Type "help" for help.
        

        请注意上面的“server 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
        

        【讨论】:

        • 为我修好了!谢谢
        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-09-04
          • 1970-01-01
          • 2018-04-15
          • 1970-01-01
          • 2021-07-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多