pg_dump 不工作-我需要更改 $PATH 的顺序吗?

pg_dump 不工作-我需要更改 $PATH 的顺序吗?

我正在尝试设置 $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

答案1

一个快速而肮脏的解决方案是编辑 /etc/profile.d/pg_dump.sh :

PG_DUMP=/usr/pgsql-9.1
export PG_DUMP
PATH=$PG_DUMP/bin:$PATH
export PATH

答案2

我更喜欢这个答案,它解释了如何符号链接新版本.(为方便起见,下面重印):

您的新版本的 pg_dump 不在您的 PATH 中,您需要做的就是删除旧版本,并将新版本符号链接到您的 PATH 中的任何目录,例如 /usr/bin。

如下图所示:

sudo ln -s /actual/new/pg_dump /usr/bin/pg_dump

要找到新的 pg_dump,您需要知道 postgresql 安装的位置。如果您使用 homebrew,则为 /usr/local/Cellar/postgresql/9.2.2/bin(或您的版本)

相关内容