Sono in un ambiente aziendale (con Debian Linux) e non l'ho installato da solo. Accedo ai database usando Navicat o phpPgAdmin (se questo aiuta). Inoltre non ho accesso shell al server che esegue il database.
Sono in un ambiente aziendale (con Debian Linux) e non l'ho installato da solo. Accedo ai database usando Navicat o phpPgAdmin (se questo aiuta). Inoltre non ho accesso shell al server che esegue il database.
Risposte:
Esegui questa query da PostgreSQL:
SELECT version();
psql -c 'SELECT version();'
psql postgres -c 'SELECT version();'
sudo -u postgres psql postgres -c 'SELECT version()' | grep PostgreSQLdovrebbe farti passare "il ruolo 'nome utente' non esiste".
Credo che questo sia quello che stai cercando,
Versione del server:
pg_config --version
Versione client:
psql --version
pg_config --versionpotrebbe essere fuorviante, ad esempio se si aggiorna un server Ubuntu e non si esegue pg_upgradecluster, pg_config mostrerà la nuova versione anziché quella che si sta ancora utilizzando.
pg_config --version Il comando: psql --versionnon funziona, si lamenta per questo: 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
Se hai più di un'installazione di PostgreSQL o ottieni l' postgres: command not founderrore " ":
$ 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
Se locatenon aiuta, prova 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
Sebbene postmasterpossa essere utilizzato anche al posto di postgres, postgresè preferibile utilizzare perché postmasterè un alias deprecato di postgres.
Se pertinente, accedi comepostgres .
$ psql -V # Or --version
psql (PostgreSQL) 9.6.1
Se hai più di un'installazione di 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
Se più curioso, prova => SHOW all;.
Per quello che vale, un comando shell può essere eseguito all'interno psqlper mostrare la versione client psqldell'eseguibile nel percorso. Si noti che la corsa psqlpuò potenzialmente essere diversa da quella nel percorso.
=> \! psql -V
psql (PostgreSQL) 9.2.9
SHOW server_version;È molto utile negli script per evitare di dover analizzare la lunga serie di SELECT version();.
psql postgres -c "SHOW server_version" -t -A. -trimuove le intestazioni, -Arimuove gli spazi bianchi di allineamento.
SHOW server_version_numin particolare, utile per le disuguaglianze.
Se stai usando la CLI e sei un postgres utente , puoi farlo:
psql -c "SELECT version();"
Uscita
possibile :
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)
La risposta accettata è ottima, ma se è necessario interagire a livello di codice con la versione PostgreSQL, forse è meglio farlo:
SELECT current_setting('server_version_num'); -- Returns 90603 (9.6.3)
-- Or using SHOW command:
SHOW server_version_num; -- Returns 90603 too
Restituirà la versione del server come intero. Ecco come viene testata la versione del server nell'origine PostgreSQL , ad esempio:
/*
* 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...
*/
Esegui comando
psql -V
Dove
V deve essere in maiuscolo.
psqlversione (client), non la versione del server Postgres .
nella shell psql.exe, eseguire
\! psql -V
Il suo utilizzo pgadmin4può essere visualizzato facendo doppio clic su Server> nome_server_qui> scheda Proprietà> Versione:
Versione 3.5:
Versione 4.1, 4.5:
Nel mio caso
$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)
Spero che possa aiutare qualcuno
Se si dispone dell'accesso shell al server (la domanda menziona op non ha, ma nel caso lo si abbia) su un sistema debian / ubuntu
sudo apt-cache policy postgresql
che produrrà la versione installata,
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
dove Installed: <version>è la versione del pacchetto postgres installato.
$ yum listper vedere che alcuni pacchetti Postgresql erano installati.
Non so quanto sia affidabile, ma puoi ottenere due token della versione in modo completamente automatico:
psql --version 2>&1 | tail -1 | awk '{print $3}' | sed 's/\./ /g' | awk '{print $1 "." $2}'
Quindi puoi costruire percorsi per i binari:
/usr/lib/postgresql/9.2/bin/postgres
Sostituisci semplicemente 9.2 con questo comando.
psql --versionrestituisce la versione del psqlclient, non la versione del server Postgres
Per la versione corrente di PgAdmin: 4.16 al momento della scrittura.
Se Select version()ritorna con Memo, prova a utilizzare il comando in questo modo:
Select version::char(100)
o
Select version::varchar(100)
select version()::varchar(100);ha funzionato per me, ma era lo stesso diversion()