OS X 上的 Postgres 找不到 postgis 扩展控制文件

ltr*_*npr 3 postgresql postgis

使用 mac OSX Yosemite 10.10.1。我用自制软件卸载并重新安装了 postgres 和 postgis。我知道 postgres 正在寻找 postgis 控制文件的错误位置。还注意到 'which psql' 路径似乎不正确。我如何/在哪里解决这个问题?

查询语句

(9.4.0, server 9.3.5)

ERROR:  could not open extension control file "/usr/local/Cellar/postgresql/9.3.5_1/share/postgresql/extension/postgis.control": No such file or directory
Run Code Online (Sandbox Code Playgroud)

find /usr -name postgis.control

/usr/local/Cellar/postgresql/9.4.0/share/postgresql/extension/postgis.control
Run Code Online (Sandbox Code Playgroud)

哪个 psql

/usr/local/bin/psql
Run Code Online (Sandbox Code Playgroud)

哪个 pg_config

/usr/local/bin/pg_config
Run Code Online (Sandbox Code Playgroud)

酿造信息postgis

postgis: stable 2.1.5, HEAD
http://postgis.net
/usr/local/Cellar/postgis/2.1.5 (45 files, 8.6M) *
  Built from source
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/postgis.rb
Run Code Online (Sandbox Code Playgroud)

酿造信息 postgres

postgresql: stable 9.4.0 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.4.0 (3049 files, 74M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/postgresql.rb
Run Code Online (Sandbox Code Playgroud)

.bashrc 和 .bash_profile 都有

export PGDATA='/usr/local/Cellar/postgresql/9.4.0/bin/postgres'
alias postgres-log='cd /usr/local/var/postgres/ && subl server.log'
Run Code Online (Sandbox Code Playgroud)

mdfind -name "postgres" | grep -G "postgres$"

/usr/local/Cellar/postgresql/9.4.0/bin/postgres
/usr/local/var/postgres
/Users/lionelramos/macports/var/macports/sources/rsync.macports.org/release/tarballs/ports/ruby/rb-postgres
Run Code Online (Sandbox Code Playgroud)

看起来除了自制版本之外,我还有不同的本地版本的 postgres。

ltr*_*npr 5

我如何解决我的问题:

  1. 我卸载了 postgres 9.3.5_1 brew uninstall postgres 9.3.5_1
  2. 我卸载了postgis brew uninstall postgis
  3. 确保我只安装了 postgres 9.4 brew info postgres
  4. 确保该psql命令有效。
  5. 我用brew install postgis.

这解决了我的问题。如果您在第 4 步遇到问题,您可能需要使用 initdb 或 createdb 命令来创建所需的数据库。