2008-09-19 5 views
5

Ich baue ein Installationsprogramm für eine Anwendung. Der Benutzer wählt eine Datenquelle aus, die er konfiguriert hat, und ernennt, um welche Art von Datenbank es sich handelt. Ich möchte bestätigen, dass der Datenbanktyp tatsächlich Postgres ist, und wenn möglich, welche Version von Postgres sie ausführt, indem Sie eine SQL-Anweisung an die Datenquelle senden.Wie kann ich bestätigen, dass eine Datenbank Postgres ist & welche Version verwendet sie SQL?

+0

Stop-Duplizierung Fragen herausgefunden! gizmo

+0

Sie sind keine doppelten Fragen. Meine bisherige Forschung legt nahe, dass Sie für dieses Problem ganz andere Ansätze benötigen. – modius

Antwort

4

Try this:

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) 

Der Befehl auch in MySQL funktioniert:

mysql> select version(); 
+--------------------------------+ 
| version()      | 
+--------------------------------+ 
| 5.0.32-Debian_7etch1~bpo.1-log | 
+--------------------------------+ 
1 row in set (0.01 sec) 

Es gibt keine Version Befehl in SQLite, soweit ich sehen kann.

2

PostgreSQL hat eine version() -Funktion, die Sie aufrufen können.

SELECT version(); 

Es wird so etwas wie dies zurück:

          version 
----------------------------------------------------------------------------------------------- 
PostgreSQL 8.3.3 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7) 
2

Dies ist DB abhängig, und falls diese Funktion existiert in einem anderen DBMS, das sagt PostgreSQL in der Ausgabe

select version() 
4

SHOW server_version;

(der Vollständigkeit halber)

+0

Danke, ich habe etwas Neues gelernt! :) –

0

Interessant ... version() ist eine Funktion! Ich wundere mich warum? Die Version wird sich nicht ändern oder unterschiedliche Werte unter verschiedenen Eingaben/Umständen zurückgeben.

Neugierig, weil ich aus alten Zeiten erinnern, dass in Sybase es verwendet eine globale Variable und Version sein könnte durch tun „select @@ version“