Как я могу подтвердить, что база данных представляет собой Postgres и какую версию она использует SQL?
-
01-07-2019 - |
Вопрос
Я создаю установщик для приложения.Пользователь может выбрать настроенный им источник данных и указать тип базы данных.Я хочу подтвердить, что тип базы данных действительно Postgres, и, если возможно, какую версию Postgres они используют, отправив оператор SQL в источник данных.
Решение
Попробуй это:
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)
Команда работает и в MySQL:
mysql> select version();
+--------------------------------+
| version() |
+--------------------------------+
| 5.0.32-Debian_7etch1~bpo.1-log |
+--------------------------------+
1 row in set (0.01 sec)
Насколько я вижу, в sqlite нет команды версии.
Другие советы
SHOW server_version;
(для полноты)
SELECT version();
В PostgreSQL есть функция version(), которую вы можете вызвать.
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)
Это зависит от БД, и если эта функция существует в другой базе данных, в выходных данных будет указано PostgreSQL.
select version()
Интересный ...версия() — это функция!Интересно, почему?Версия не будет изменять или возвращать разные значения при разных входных данных/обстоятельствах.
Любопытно, потому что я помню из старых времен, что в Sybase это была глобальная переменная, и версию можно было узнать, выполнив «выбрать @@version».