升级到Mavericks之后,PostgreSQL开始播放,每当我打电话时都会发出此错误消息pg_restore
而不调用完整路径:
pg_restore: command not found
Run Code Online (Sandbox Code Playgroud)
如果我指定它的完整路径,但这显然不是最佳的:
/Applications/Postgres93.app/Contents/MacOS/bin/pg_restore --verbose --clean --no-acl --no-owner -h localhost -U steven -d db/testivate_development $file_path
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我尝试删除所有版本的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
Run Code Online (Sandbox Code Playgroud)
要将PostgreSQL添加到我的路径,我尝试添加以下每行~/.bash_profile
,~/bashrc
并~/.zshrc
在每次尝试后重新启动:
export PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
...根据postgresapp.com文档,然后......
export PATH="/Applications/Postgres93.app/Contents/MacOS/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
......根据以下评论.
这些都没有解决我的问题.
l'L*_*L'l 11
尝试将此行添加到.bash_profile:
export PATH="/Applications/Postgres93.app/Contents/MacOS/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
并删除或注释掉以前的参考.
Rub*_*oob 10
我也有这个问题,所以不要在.bash_profile中将它添加到我的路径中:
export PATH="/Applications/Postgres93.app/Contents/MacOS/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
我补充说,这是推荐的
export PATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
代替.'9.3'将替换为您自己的版本.
之后我用它验证了它
which psql
Run Code Online (Sandbox Code Playgroud)
它找到了我的版本,而之前没有报道.
然后我创建了一个测试数据库
createdb test
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力.
如果您使用的是zsh,请在.zshrc中尝试使用此行,然后重新启动终端
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
Run Code Online (Sandbox Code Playgroud)
其他人给出的例子应该export PATH=...
可以解决您的问题。由于它不起作用,您将不得不使用 shell 来调试与 PostgreSQL 无关的问题。
首先,检查您的路径中which pg_restore
是否有另一个pg_restore
令人困惑的文件被调用。which
如果没有找到任何内容,通常不会给出任何输出,而不是一个有用的错误,否则它将打印找到的内容的路径。/usr/local/bin
例如,您可能会在 中找到旧的损坏的 PostgreSQL 安装。
如果这不起作用,请尝试echo $PATH
使用新的 shell。你看到那里的 PostgreSQL 二进制目录的路径了吗?如果没有,$PATH
则说明您的 shell dot-rc 文件中未设置。~/bashrc
如果您将其添加到一个名为bash(1) 实际读取的文件中,就会出现这种情况~/.bashrc
。注意额外的点!我怀疑这是你的实际问题。
如果这不是问题,您可以使用 .(重新)将 rc 文件读入当前会话source ~/.bashrc
。同样,echo $PATH
如果它仍然不包含路径,则 dot-rc 文件包含错误,并且不会执行更新的部分$PATH
。您可以bash --verbose ~/.bashrc
运行它,然后您将看到正在执行的每个命令。失败的命令应该是最后显示的命令。(请注意,当您使用 运行脚本时bash
,它不会在当前 shell 中设置变量。)
归档时间: |
|
查看次数: |
17803 次 |
最近记录: |