我正在尝试设置 $PATH 以获取最新版本的 pg_dump,因为我在 Rails 应用程序中进行迁移时遇到了不匹配错误(我最近将架构类型更改为 SQL)。
我在 /etc/profile.d 中添加了一个名为 pg_dump.sh 的新文件,并在其中放置:
PG_DUMP=/usr/pgsql-9.1
export PG_DUMP
PATH=$PATH:$PG_DUMP/bin
export PATH
在查看 echo $PATH 时,我得到:
/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/ruby-1.9.3-p194@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/pgsql-9.1/bin:/root/bin
而且我仍然收到错误。
我需要更改顺序吗?如果是这样,有什么想法吗?
“ls /usr/pgsql-9.1/bin”的输出:
clusterdb droplang pg_archivecleanup pg_ctl pg_standby psql
createdb dropuser pg_basebackup pg_dump pg_test_fsync reindexdb
createlang ecpg pgbench pg_dumpall pg_upgrade vacuumdb
createuser initdb pg_config pg_resetxlog postgres vacuumlo
dropdb oid2name pg_controldata pg_restore postmaster
以及“which pg_dump”的输出:
/usr/bin/pg_dump
关于运行 cap 'deploy:migrate' 的错误消息:
** [out :: 46.4.9.199] pg_dump: server version: 9.1.4; pg_dump version: 8.4.11
** [out :: 46.4.9.199] pg_dump: aborting because of server version mismatch
** [out :: 46.4.9.199] rake aborted!
** [out :: 46.4.9.199] Error dumping database
“pg_dump --version”的输出:
pg_dump (PostgreSQL) 8.4.11
一个快速而肮脏的解决方案是编辑 /etc/profile.d/pg_dump.sh :
我更喜欢这个解释如何符号链接新版本的答案。(为方便转载如下):
你的新版本的 pg_dump 不在你的 PATH 中,你需要做的就是删除旧版本,并将新版本符号链接到你的 PATH 中的任何目录,例如 /usr/bin。
像下面这样:
要找到新的 pg_dump,您需要知道 postgresql 安装的位置。如果你使用自制软件,它是 /usr/local/Cellar/postgresql/9.2.2/bin (或任何你的版本)