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!
Ä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?
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.
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?
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.
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!
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.