PostgreSQLをインストールしましたが、正常に動作しています。ただし、バックアップを復元しようとしたときにエラーが発生しました-bash: psql: command not found
:
[root@server1 ~]# su postgres
[postgres@server1 root]$ psql -f all.sql
bash: psql: command not found
[postgres@server1 root]$
私は何を間違えましたか?
おそらく、psqlはpostgresユーザーのPATH
に含まれていません。 locate コマンドを使用して、psqlの場所を見つけ、postgresユーザーのPATH
にそのパスがあることを確認します。
_export PATH=/usr/pgsql-9.2/bin:$PATH
_
プログラムの実行可能ファイルpsql
はディレクトリ_/usr/pgsql-9.2/bin
_にあり、そのディレクトリはデフォルトではパスに含まれていないため、シェル(ターミナル)プログラムにpsql
の場所を指定する必要があります。ほとんどのパッケージがインストールされると、_/usr/local/bin
_などの既存のパスに追加されますが、このプログラムは追加されません。
したがって、プログラムを実行するたびに完全なパスを入力する必要がない場合は、プログラムのパスをShell PATH変数に追加する必要があります。
通常、この行はシェル起動スクリプトに追加する必要があります。bashシェルの場合は、_~/.bashrc
_ファイルにあります。
FedoraまたはCentOSで実行している場合、これが私のために働いた(PostgreSQL 9.6):
ターミナル内:
$ Sudo visudo -f /etc/sudoers
次のテキストを変更します。
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
に
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/pgsql-9.6/bin
終了してから:
$ printenv PATH
$ Sudo su postgres
$ psql
PostgreSQLターミナルを終了するには、数字を入力する必要があります。
$ \q
ソース: https://serverfault.com/questions/541847/why-doesnt-Sudo-know-where-psql-is#comment623883_54188
PsqlがPATHにないことが原因である可能性があります
$ locate psql
/usr/lib/postgresql/9.6/bin/psql
次に、/ usr/binにリンクを作成します
ln -s /usr/lib/postgresql/9.6/bin/psql /usr/bin/psql
次に、動作するはずのpsqlを実行してみます。
Postgres Macアプリ(Heroku製)とBundlerを使用している場合は、pg_configをアプリ内でバンドルに直接追加できます。
bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
...もう一度bundleを実行します。
注:最初に以下を使用してバージョンを確認します。
ls /Applications/Postgres.app/Contents/Versions/