Hallo zusammen,
ich habe ein kleines Problem, ich hoffe ihr könnt mir ein Tipp geben.
Ich habe mir ein C - Programm geschrieben, das zur lokal instalierten postgres-DB eine Verbindung herstellt:
conn = PQconnectdb(„host=localhost port=5432 dbname=db1 user=usr password=pass“);
Klappt auch wunderbar. Mein Ziel ist es jetzt, über diese Verbindung in der lokalen postgres-DB eine weitere postgres-DB-Verbindung zu einer anderen entfernten postgres-Maschine aufzubauen (und zwar mit dblinks).
konkret:
res = PQexec(conn, „select dblink_connect(‚conn2‘,‚hostaddr=192.168.1.1 port=5432 dbname=db2 user=usr2 password=pass2‘);“);
D.h. als Abfrage zur lokalen DB schike ich, dass er eine weitere Verbindung zur entfernten Maschine aufbauen soll. (Die Abfrage würde auf der lokalen postgres-DB exaxt so ausgeführt und Refenz auf diese Verbindung wäre dann conn2)
Die Idee ist dabei, dass ich eine permanente Verbindung zur entfernten Maschine haben möchte. D.h. dieses C-Programm wird die ganze Zeit im Hintergrund ausgeführt (Daemon). Solange es nicht abgebrochen wird, müsste die zweite DB Verbindung conn2 eigentlich auf der lokalen postgres-DB immer verfügbar sein und ich müsste auch in jeder Zeit die Möglichkeit haben, eine Abfrage über conn2 zu schicken.
Nun, wenn ich lokal auf der postgres-Datenbank über die zweite Verbindung conn2, welche ja vom im Hintergrund laufenden C-Prigramm hergestellt sein müsste, eine insert-Anweisung schicke, findet er die conn2 Referenz nicht!
lokale Datenbank:
sql = ‚insert into test values (5)‘;
PERFORM dblink_exec(‚conn2‘,sql);
FEHLER: could not establish connection
conn2 existiert nicht…
viele Grüße
Hitaf