升级到Mavericks后,PostgreSQL开始播放,只要我调用pg_restore
而没有调用完整路径,就会显示此错误消息:
pg_restore: command not found
如果我指定它的完整路径,但这显然不是最佳的:
/Applications/Postgres93.app/Contents/MacOS/bin/pg_restore --verbose --clean --no-acl --no-owner -h localhost -U steven -d db/testivate_development $file_path
要解决此问题,我尝试删除所有版本的PostgreSQL(使用Homebrew),然后安装Postgres.app。你可以确认这是这样的:
$ sudo find / -name pg_restore
/Applications/Postgres93.app/Contents/MacOS/bin/pg_restore
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
要将PostgreSQL添加到我的路径,我已尝试将以下每行添加到~/.bash_profile
,~/bashrc
和~/.zshrc
,并在每次尝试后重新启动:
export PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
...根据postgresapp.com文档,然后......
export PATH="/Applications/Postgres93.app/Contents/MacOS/bin:$PATH"
......根据以下评论。
这些都没有解决我的问题。
答案 0 :(得分:11)
尝试将此行添加到.bash_profile:
export PATH="/Applications/Postgres93.app/Contents/MacOS/bin:$PATH"
并删除或注释掉之前的参考资料。
答案 1 :(得分:10)
我也有这个问题,所以不要在.bash_profile中将它添加到我的路径中:
export PATH="/Applications/Postgres93.app/Contents/MacOS/bin:$PATH"
这是推荐的内容,我添加了
export PATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
代替。 &#9.3; 9.3'被您自己的版本取代。
我之后使用
验证了它which psql
它找到了我的版本,而在之前没有报告任何内容。
然后我用
创建了一个测试数据库createdb test
这就像一个魅力。
答案 2 :(得分:6)
如果您使用的是zsh,请在.zshrc中尝试此行,然后重新启动终端
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
答案 3 :(得分:4)
其他人提供的export PATH=...
示例应该是您问题的解决方案。由于它不起作用,您将不得不调试与PostgreSQL无关的shell问题。
首先,执行which pg_restore
以查看您的路径中是否存在另一个名为pg_restore
的文件,这会让您感到困惑。如果没有找到任何内容,which
通常不提供输出而不是有用的错误,否则它将打印它找到的路径。例如,您可能会在/usr/local/bin
中找到PostgreSQL的旧安装。
如果这不起作用,请尝试从新shell中echo $PATH
。你在那里看到PostgreSQL二进制目录的路径吗?如果没有,则不会在shell dot-rc文件中设置$PATH
。如果您将其添加到名为~/bashrc
的文件中,则会出现这种情况,因为bash(1)实际上已读取~/.bashrc
。注意额外的点!我怀疑这个是你的实际问题。
如果结果不是问题,您可以(重新)使用source ~/.bashrc
将rc文件读入当前会话。同样,echo $PATH
如果仍然不包含路径,则dot-rc文件包含一个错误,并且不会执行更新$PATH
的部分。您可以bash --verbose ~/.bashrc
运行它,并且您将看到每个命令正在执行。失败的命令应该是显示的最后一个。 (请注意,当您使用bash
运行脚本时,它不会在当前shell中设置变量。)
答案 4 :(得分:4)
您需要在bash_profile中添加路径
nano~ / .bash_profile
添加此行(我的postgres版本为9.1):
export PATH = $ PATH:/Library/PostgreSQL/9.1/bin /
答案 5 :(得分:0)
在带有PostgreSQL 9.6.0.0的macOS Sierra 10.12.1上
/Applications/Postgres.app/Contents/MacOS/Postgres
Postgres
是二进制文件。
答案 6 :(得分:0)
在我的macOS上,Postgre 9.6安装在
中/Library/PostgreSQL/9.6
答案 7 :(得分:0)
在macOS High Sierra 10.13.2和PostgreSQL 9.6上它对我有用:
export PATH=$PATH:/Library/PostgreSQL/9.6/bin:$PATH