回答:
PostgreSQLからこのクエリを実行します。
SELECT version();
psql -c 'SELECT version();'
psql postgres -c 'SELECT version();'
sudo -u postgres psql postgres -c 'SELECT version()' | grep PostgreSQL
「ロール 'ユーザー名'は存在しません」を回避する必要があります。
これはあなたが探しているものだと思います、
サーバーのバージョン:
pg_config --version
クライアントのバージョン:
psql --version
pg_config --version
たとえば、Ubuntuサーバーをアップグレードしてを実行しない場合pg_upgradecluster
、pg_configはまだ使用しているバージョンではなく新しいバージョンを表示します。
pg_config --version
psql --version
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib Referenced from: /usr/local/bin/psql Reason: image not found
$ postgres -V # Or --version. Use "locate bin/postgres" if not found.
postgres (PostgreSQL) 9.6.1
$ postgres -V | awk '{print $NF}' # Last column is version.
9.6.1
$ postgres -V | egrep -o '[0-9]{1,}\.[0-9]{1,}' # Major.Minor version
9.6
PostgreSQLが複数インストールされている場合、または " postgres: command not found
"エラーが発生した場合:
$ locate bin/postgres | xargs -i xargs -t '{}' -V # xargs is intentionally twice.
/usr/pgsql-9.3/bin/postgres -V
postgres (PostgreSQL) 9.3.5
/usr/pgsql-9.6/bin/postgres -V
postgres (PostgreSQL) 9.6.1
それでも解決locate
しない場合は、以下を試してくださいfind
。
$ sudo find / -wholename '*/bin/postgres' 2>&- | xargs -i xargs -t '{}' -V # xargs is intentionally twice.
/usr/pgsql-9.6/bin/postgres -V
postgres (PostgreSQL) 9.6.1
のpostmaster
代わりに使用することもできますが、は非推奨ののエイリアスであるためpostgres
、使用するpostgres
ことpostmaster
をお勧めしpostgres
ます。
必要に応じてpostgres
、としてログインします。
$ psql -V # Or --version
psql (PostgreSQL) 9.6.1
PostgreSQLが複数インストールされている場合:
$ locate bin/psql | xargs -i xargs -t '{}' -V # xargs is intentionally twice.
/usr/bin/psql -V
psql (PostgreSQL) 9.3.5
/usr/pgsql-9.2/bin/psql -V
psql (PostgreSQL) 9.2.9
/usr/pgsql-9.3/bin/psql -V
psql (PostgreSQL) 9.3.5
=> SELECT version();
version
--------------------------------------------------------------------------------------------------------------
PostgreSQL 9.2.9 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4), 64-bit
=> SHOW server_version;
server_version
----------------
9.2.9
=> SHOW server_version_num;
server_version_num
--------------------
90209
もっと知りたい場合は、を試してください=> SHOW all;
。
価値があることについては、シェルコマンドを実行して、パス内の実行可能ファイルのpsql
クライアントバージョンを表示できpsql
ます。実行psql
中は、パス内のものとは異なる可能性があることに注意してください。
=> \! psql -V
psql (PostgreSQL) 9.2.9
SHOW server_version;
は、の長い文字列を解析する必要がないように、スクリプトで非常に便利ですSELECT version();
。
psql postgres -c "SHOW server_version" -t -A
。 -t
ヘッダーを-A
削除し、配置の空白を削除します。
SHOW server_version_num
特に、不平等に役立つので、ありがとうございます。
CLIを使用していて、postgres
ユーザーである場合は、次のようにすることができます。
psql -c "SELECT version();"
可能な出力:
version
-------------------------------------------------------------------------------------------------------------------------
PostgreSQL 11.1 (Debian 11.1-3.pgdg80+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10+deb8u2) 4.9.2, 64-bit
(1 row)
受け入れられた答えは素晴らしいですが、PostgreSQLのバージョンをプログラムで操作する必要がある場合は、次のようにするとよいでしょう。
SELECT current_setting('server_version_num'); -- Returns 90603 (9.6.3)
-- Or using SHOW command:
SHOW server_version_num; -- Returns 90603 too
サーバーのバージョンを整数として返します。これは、PostgreSQLのソースでサーバーのバージョンをテストする方法です。例:
/*
* This is a C code from pg_dump source.
* It will do something if PostgreSQL remote version (server) is lower than 9.1.0
*/
if (fout->remoteVersion < 90100)
/*
* Do something...
*/
コマンドを実行する
psql -V
どこ
Vは大文字でなければなりません。
psql
(クライアント)バージョンであり、Postgres サーバーのバージョンではありません。
私の場合
$psql
postgres=# \g
postgres=# SELECT version();
version
---------------------------------------------------------------------------------------------------------------------
PostgreSQL 8.4.21 on x86_64-pc-linux-gnu, compiled by GCC gcc-4.6.real (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit
(1 row)
それが誰かを助けることを願って
debian / ubuntuシステムでサーバーにシェルアクセスできる場合(質問にはopにはないが記載されている場合はそうです)
sudo apt-cache policy postgresql
インストールされたバージョンを出力します
postgresql:
Installed: 9.6+184ubuntu1.1
Candidate: 9.6+184ubuntu1.1
Version table:
*** 9.6+184ubuntu1.1 500
500 http://in.archive.ubuntu.com/ubuntu artful-updates/main amd64 Packages
500 http://in.archive.ubuntu.com/ubuntu artful-updates/main i386 Packages
500 http://security.ubuntu.com/ubuntu artful-security/main amd64 Packages
500 http://security.ubuntu.com/ubuntu artful-security/main i386 Packages
100 /var/lib/dpkg/status
9.6+184ubuntu1 500
500 http://in.archive.ubuntu.com/ubuntu artful/main amd64 Packages
500 http://in.archive.ubuntu.com/ubuntu artful/main i386 Packages
ここInstalled: <version>
で、インストールされたpostgresパッケージのバージョンです。
$ yum list
特定のPostgresqlパッケージがインストールされていることを確認しました。
これの信頼性がわからない場合でも、バージョンの2つのトークンを完全に自動的に取得できます。
psql --version 2>&1 | tail -1 | awk '{print $3}' | sed 's/\./ /g' | awk '{print $1 "." $2}'
したがって、バイナリへのパスを構築できます。
/usr/lib/postgresql/9.2/bin/postgres
このコマンドで9.2を置き換えるだけです。
psql --version
Postgresサーバーのバージョンではなく、psql
クライアントのバージョンを返します