Verbindungsproblem via ODBC

Hi @ all,

ich möchte Daten einer Windows-Applikation (Remark Office) via ODBC übers I-net direkt in einer PostgreSQL-DB speichern.
Den Postgresql-ODBC-Treiber für den Windows-Rechner, also den Client, habe ich dort installiert (und hoffentlich korrekt konfiguriert), sodaß in der Applikation einfach nur “speichern unter” -> “odbc” gewählt werden muss und der PostgreSQL-Treiber dann zur Verfügung steht. Anschließend gibt’s aber nen Timeout und die Fehlermeldung: “could not connect to server”, das ist das Problem.
Analog muß auf dem DB-Server (Suse 10.3) natürlich ebenfalls der ODBC-Treiber für PostgreSQL zur Verfügung stehen.
Frage: Wie kriege ich raus, ob das überhaupt der Fall ist?
Postgres wurde als RPM in Version 8.3.5 installiert, welche Optionen angegeben wurden weiß ich leider nicht (wurde nicht von mir installiert).
Die pg_hba.conf habe ich für den Zugriff über TCP/IP editiert, sodaß von dieser Seite alles klar sein sollte.
Dennoch kann die Verbindung gar nicht erst aufgebaut werden.
Danke für jeden Tip!

  1. Man will PG nicht via Internet prostituieren.
  2. man will für sowas ein VPN nutzen, z.B. via SSH
  3. klappt es via psql?

Analog muß auf dem DB-Server (Suse 10.3) natürlich ebenfalls der ODBC-Treiber für PostgreSQL zur Verfügung stehen.

Nein.

Frage: Wie kriege ich raus, ob das überhaupt der Fall ist?

Frage entfällt.

Postgres wurde als RPM in Version 8.3.5 installiert, welche Optionen angegeben wurden weiß ich leider nicht (wurde nicht von mir installiert).

irrelevant

Die pg_hba.conf habe ich für den Zugriff über TCP/IP editiert, sodaß von dieser Seite alles klar sein sollte.

Soll- oder Istzustand?

Dennoch kann die Verbindung gar nicht erst aufgebaut werden.
Danke für jeden Tip!

psql -h


Andreas

Äh… Sollte ich ein paar grundlegende Denkfehler gemacht haben?
Der Datenexport via ODBC ist in der Windows-Applikation vorgesehen und ich würde diese Möglichkeit gerne nutzen.
Mir ist nicht klar, wie der DB-Server per ODBC Daten empfängt, wenn nicht über den entsprechenden Treiber.
Hilft mir noch nicht viel weiter, trotzdem danke und etwas mehr Erklärung für den Ahnungslosen?
:wink:
Thx.

Das ODBC-Zeugs sorgt IIRC lediglich auf Client-Seite dafür, daß mit dem Server gesprochen werden kann. Ich jedenfalls habe definitiv nix extra installiert, um mit Windoze-Clients und Excel-Shits auf PG zugreifen zu können.

Alles, was Du brauchst, ist ein Zugriff auf TCP/5432 vom Client aus. Wobei man das, wie gesagt, nicht wirklich so via Internet machen will.

Andreas

Ok, psql -h war gar kein schlechter Tip, funktioniert nämlich nicht:

psql -h http://rechnername.uni-hamburg.de -p 5432 -U username -d dbname
psql: could not translate host name “http://rechnername.uni-hamburg.de” to address: Name or service not known
Eigentlich kein komplizierter Befehl sollte man meinen…!?

Ja, und nun?

Andreas

Hallo furianer,

http://rechnername.uni-hamburg.de” ist kein Host sondern eine URI.
Der Host in diesem Fall “rechnername.uni-hamburg.de”.


Öhm… glaub ich zumindest :wink:

psql -h rechnername.uni-hamburg.de -p 5432 -U username -d dbname

Gruß
Sparrow

Also das mit dem überflüssigen http… stimmte natürlich.
Aber ich bekomme einen Timeout, wenn ich so connecten möchte:

fu@linux-4koe:~> psql -h rechnername.uni-hamburg.de -U username dbname
psql: could not connect to server: Connection timed out
        Is the server running on host "rechnername.uni-hamburg.de" and accepting
        TCP/IP connections on port 5432?

Die pg_hba.conf habe ich um folgende Zeile ergänzt:
host dbname username 0.0.0.0/0 password
und in der postgresql.conf den parameter listen_addresses auf ‘*’ gesetzt.
Anschließend den Server neu gestartet.
Was fehlt wohl noch?

Hast du mit netstat auch geprüft, ob der Server wirklich auch auf allen IPs lauscht?

cu tb

Ist denn der Rechner überhaupt erreichbar? Ping?

Andreas

Also netstat -a spuckt alle möglichen Ports usw. aus und ping liefert ebenfalls eine endlose Liste.
Mein Verdacht ist jetzt aber, daß die Firewall im Weg steht. Mein eigener PC mit denselben Einträgen in pg_hba.conf und postgresql.conf ist mit eingeschalteter Firewall von ausserhalb nämlich genauso wenig erreichbar, aber ohne Firewall klappt’s sofort.
Wenn das beim eigentlichen Server auch so ist (was ich nicht weiss), muß ich also erstmal den Server-Admin belagern und hoffen, daß er Port 5432 freigibt.
Danke für eure Hilfe!

Wäre ich er, würde ich es nicht tun und stattdessen auf ein VPN (z.B. SSH-Tunnel) verweisen… mein PG-Server in der Firma z.B. erreiche ich von zu Hause aus auch - via SSH. (PublicKey-Verfahren). Und das geht auch mit einem Kleinweich-Client. (PuTTY). Aber das ist letztendlich seine Entscheidung.

Andreas

Ok, werde mich diesbezüglich mal schlau machen, habe bisher keine Ahnung von VPNs.
Richtig wohlfühlen tue ich mich bei dem Gedanken ohne VPN nämlich auch nicht.
Und jetzt erstmal Frohe Weihnachten.

Das Thema nähert sich seinem Höhepunkt.
Die ODBC-Verbindung steht.
Das Einfügen von Datensätzen aus der Win-Applikation bricht jedoch mit dieser Meldung ab:
ERROR: syntax error at or near “[”;
Im Logfile des PG-Servers steht entsprechend folgendes:

2009-01-01 17:50:48 CET dbname username ERROR:  syntax error at or near "[" at character 20
2009-01-01 17:50:48 CET dbname username STATEMENT:  BEGIN;CREATE TABLE [blubb] ([id] INT, [nummer] INT, .....)

Funktioniert mit diesen eckigen Klammern natürlich nicht.
Die Frage ist, wie sie dahin kommen - und wie wieder weg.
Der psqlodbc-Treiber ist der Neueste, den ich finden konnte (8.3.3), die Win-Applikation (Remark Office OMR, v.5.5.1 ) hat dagegen schon ein paar Jahre auf dem Buckel, was allerdings nichts heissen muß.
Weiß jemand, wann diese eckigen Klammern Sinn machen bzw. ob das in evtl. in einer früheren Postgres-Version erlaubte Syntax war?
Thx - mal wieder!

Die eckigen Klammern waren meines Wissens noch nie erlaubt.

Kannst du irgendwie den Netzwerkverkehr zwischen Applikation und ODBC mitverfolgen und schauen, ob die Anwendung ev. die Klammern produziert?

Jo ich versuch’s mal, keine Ahnung wie das geht, mal Google fragen. Seltsam setsam…

ODBC kennt IIRC einen SQL-Passthrough-Mode.

Andreas

Also ich komme an dieser Stelle momentan noch nicht weiter. Die eckigen Klammern sind jedenfalls SQL-Syntax und ermöglichen die Verwendung von Feldnamen mit Leerzeichen oder reservierten Wörtern, allerdings nicht in Postgres. Keine Ahnung, warum sie in diesem Fall auftauchen. Sobald ich mehr weiß, poste ich es hier.