PostgreSQL dblink mit benannten verbindungen
dblink
scheint nicht zu funktionieren, wenn ich eine benannte Verbindung zu einem remote-server oder eine Unbenannte Verbindung und dann auf trennen. Es funktioniert gut, wenn ich eine Unbenannte Verbindung mit einer Verbindungszeichenfolge in dblink(). Es scheint die Verbindung in Ordnung, aber meine Verbindung ist nicht verfügbar, wenn ich versuche, es zu benutzen. Irgendwelche Ideen auf, wie man diese arbeiten mit benannten verbindungen?
Unbenannte mit connstr gut Funktioniert:
SELECT testtable.*
FROM dblink('dbname=testdb port=5432 host=192.168.1.1 user=usr password=pw'
,'SELECT * FROM testtable')
AS testtable(testtable_id integer, testtable_name text);
Zurück: Zwei Spalten als erwartet.
Namens nicht Funktioniert:
Verbinden:
SELECT dblink_connect('myconn'
,'dbname=testdb port=5432 host=192.168.1.1 user=usr password=pw');
Rückgabe: "OK"
Abfrage:
SELECT testtable.* FROM dblink('myconn', 'SELECT * FROM testtable')
AS testtable(testtable_id integer, testtable_name text);
Gibt:
ERROR: could not establish connection
DETAIL: missing "=" after "myconn" in connection info string
********** Error **********
ERROR: could not establish connection
SQL state: 08001
Detail: missing "=" after "myconn" in connection info string
Trennen:
SELECT dblink_disconnect('myconn');
Gibt:
ERROR: connection "myconn" not available
********** Error **********
ERROR: connection "myconn" not available
SQL state: 08003
Unbenannte mit _connect und _disconnect nicht Funktioniert:
Verbinden:
SELECT dblink_connect('dbname=testdb port=5432 host=192.168.1.1
user=usr password=pw');
Rückgabe: "OK"
Abfrage:
SELECT testtable.* FROM dblink('SELECT * FROM testtable')
AS testtable(testtable_id integer, testtable_name text);
Gibt:
ERROR: connection not available
********** Error **********
ERROR: connection not available
SQL state: 08003
Trennen:
SELECT dblink_disconnect();
Gibt:
ERROR: connection not available
********** Error **********
ERROR: connection not available
SQL state: 08003
InformationsquelleAutor bendiy | 2012-03-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich eine funktionierende Installation mit Unbenannte verbindungen.
Was Sie nennen "Unbenannte" in deiner Frage, eigentlich hat ein name-parameter. Du verwechselst die zwei Varianten gibt es. Versuchen Sie, dass ohne
'myconn'
:Und denken Sie daran, dass die Verbindung hergestellt und es hat zu geschehen in der gleichen Sitzung.
Aber ganz ehrlich, ich kann nicht finden, was ist falsch mit Ihrem benannte Verbindung. Ich habe ein paar tests und alles scheint korrekt. Getestet habe ich mit PostgreSQL 9.1.
Die Fehlermeldung impliziert, dass dblink erwartet eine
connstr
. Das passiert nur, wenn der erste parameter nicht mit jedemconnname
in Existenz in kurz: die Verbindung'myconn'
wird nicht gefunden - was mich vermuten lässt, dass Sie den Aufruf nichtdblink()
im gleichen Sitzung alsdblink_connect()
.Danke. Die Sitzung wird das Problem sein. Ausführen der Abfragen in den unterschiedlichen Fenstern in pgAdmin angezeigt zur Behandlung jedes Fenster als separate session. Ausführen der Abfragen im selben Fenster eine nach der anderen arbeitet.
Ja, in pgAdmin jeder SQL-editor-Fenster ausgeführt wird, eine separate session. Temporäre Tabellen oder dblink-verbindungen sind nur sichtbar im gleichen Fenster ("session").
InformationsquelleAutor Erwin Brandstetter