1138 votes

Quelle est la version de PostgreSQL que j'utilise ?

Je suis dans un environnement d'entreprise (sous Debian Linux) et je ne l'ai pas installé moi-même. J'accède aux bases de données en utilisant Navicat ou phpPgAdmin (si cela peut aider). Je n'ai pas non plus d'accès shell au serveur qui exécute la base de données.

1790voto

Highly Irregular Points 2172

Exécutez cette requête depuis PostgreSQL :

SELECT version();

4 votes

Aucun résultat dans mon cas dans le terminal sur Ubuntu

25 votes

@Timo, il s'agit d'une requête à exécuter via PostgreSQL. Cela peut être fait par pgAdmin, ou tout autre mécanisme pour exécuter une requête. Avez-vous essayé de l'exécuter à partir d'un shell Ubuntu (cela ne fonctionnera pas) ?

45 votes

Cette opération peut également être exécutée à partir de la ligne de commande avec psql -c 'SELECT version();'

634voto

Je crois que c'est ce que vous recherchez,

Version du serveur :

pg_config --version

Version client :

psql --version

228voto

A-B-B Points 797

Utilisation du CLI :

Version du serveur :

$ 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

Si vous avez plus d'une installation de PostgreSQL, ou si vous obtenez le message " postgres: command not found " erreur :

$ 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

Si locate ne vous aide pas, essayez 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

Bien que postmaster peut également être utilisé à la place de postgres en utilisant postgres est préférable car postmaster est un alias déprécié de postgres .

Version client :

Comme pertinent, se connecter en tant que postgres .

$ psql -V  # Or --version
psql (PostgreSQL) 9.6.1

Si vous avez plus d'une installation de 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

Utilisation de SQL :

Version du serveur :

=> 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

Si vous êtes plus curieux, essayez => SHOW all; .

Version client :

Pour ce que ça vaut, une commande shell peut être exécutée à l'intérieur de psql pour afficher la version client de la psql exécutable dans le chemin. Notez que l'exécution psql peut potentiellement être différent de celui du chemin.

=> \! psql -V
psql (PostgreSQL) 9.2.9

12 votes

Merci !, le SHOW server_version; est très pratique dans scripts pour éviter d'avoir à analyser la longue chaîne de caractères de SELECT version(); .

0 votes

Merci beaucoup. Les gens ne réalisent pas que pour lancer des commandes SQL, il faut connaître au moins un rôle pour se connecter à la base de données. Mais avec postgres -V vous n'avez pas besoin de vous connecter à la base de données pour connaître sa version.

0 votes

Une ligne dans le CLI supposant un accès super-utilisateur : psql postgres -c "SHOW server_version" -t -A . -t supprime les en-têtes, -A supprime les espaces blancs d'alignement.

79voto

simhumileco Points 5383

Si vous utilisez CLI et vous êtes un postgres utilisateur alors vous pouvez le faire :

psql -c "SELECT version();"

Possible sortie :

                                                         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)

45voto

Michel Milezzi Points 4165

La réponse acceptée est excellente, mais si vous devez interagir de manière programmatique avec la version PostgreSQL, il est peut-être préférable de le faire :

SELECT current_setting('server_version_num'); -- Returns 90603 (9.6.3)
-- Or using SHOW command:
SHOW server_version_num; -- Returns 90603 too

Elle renvoie la version du serveur sous forme d'un nombre entier. C'est ainsi que la version du serveur est testée dans Source PostgreSQL par exemple :

/*
 * 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...
     */  

Plus d'informations aquí y aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X