Como posso confirmar um banco de dados é Postgres e qual a versão que está usando SQL?
-
01-07-2019 - |
Pergunta
Eu estou construindo um instalador para um aplicativo. O usuário recebe para selecionar uma fonte de dados que tenham configurado e nomear o tipo de banco de dados que é. Eu quero confirmar que o tipo de banco de dados é de fato Postgres e, se possível, qual a versão do Postgres eles estão executando através do envio de uma instrução SQL para a fonte de dados.
Solução
Tente isto:
mk=# SELECT version();
version
-----------------------------------------------------------------------------------------------
PostgreSQL 8.3.3 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
(1 row)
O comando também funciona no MySQL:
mysql> select version();
+--------------------------------+
| version() |
+--------------------------------+
| 5.0.32-Debian_7etch1~bpo.1-log |
+--------------------------------+
1 row in set (0.01 sec)
Não há nenhum comando versão em SQLite, tanto quanto eu posso ver.
Outras dicas
SHOW server_version;
(para a completude)
SELECT version();
PostgreSQL tem uma versão () função que você pode chamar.
SELECT version();
Ele irá retornar algo como isto:
version
-----------------------------------------------------------------------------------------------
PostgreSQL 8.3.3 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
Esta é DB dependente, e no caso de esta função existe no outro DBMS, este diz PostgreSQL na saída
select version()
Interessante ... version () é uma função! Eu quero saber porque? Versão não vai mudar ou devolver valores diferentes sob diferentes entradas / circunstâncias.
curioso porque eu me lembro de dias velhos que no Sybase que costumava ser uma variável global e a versão podem ser encontrados por fazer "select @@ version"