PostgreSQL dblink avec nommée connexions
dblink
ne semble pas fonctionner lorsque j'utilise un nom de connexion à un serveur distant ou sans nom de connexion et de déconnexion. Il fonctionne très bien si j'utilise une nouvelle connexion avec une chaîne de connexion dans dblink(). Il se connecte bien, mais ma connexion n'est pas disponible lorsque j'essaie de l'utiliser. Toutes les idées sur la façon de le faire fonctionner avec nommée connexions?
Sans nom avec connstr Fonctionne correctement:
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);
Retourne: Deux colonnes comme prévu.
Nommé Ne fonctionne pas:
Connect:
SELECT dblink_connect('myconn'
,'dbname=testdb port=5432 host=192.168.1.1 user=usr password=pw');
Retourne: "OK"
Requête:
SELECT testtable.* FROM dblink('myconn', 'SELECT * FROM testtable')
AS testtable(testtable_id integer, testtable_name text);
Retourne:
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
Déconnecter:
SELECT dblink_disconnect('myconn');
Retourne:
ERROR: connection "myconn" not available
********** Error **********
ERROR: connection "myconn" not available
SQL state: 08003
Sans nom avec _connect et _disconnect Ne fonctionne pas:
Connect:
SELECT dblink_connect('dbname=testdb port=5432 host=192.168.1.1
user=usr password=pw');
Retourne: "OK"
Requête:
SELECT testtable.* FROM dblink('SELECT * FROM testtable')
AS testtable(testtable_id integer, testtable_name text);
Retourne:
ERROR: connection not available
********** Error **********
ERROR: connection not available
SQL state: 08003
Déconnecter:
SELECT dblink_disconnect();
Retourne:
ERROR: connection not available
********** Error **********
ERROR: connection not available
SQL state: 08003
OriginalL'auteur bendiy | 2012-03-26
Vous devez vous connecter pour publier un commentaire.
J'ai une configuration de travail avec les connexions sans nom.
Ce que vous appelez "sans nom" dans votre question, a en réalité un nom de paramètre. Vous confondez les deux variantes. Essayez, sans
'myconn'
:Et rappelez-vous que l'établissement de la connexion et de l'utilisation qu'il a de se produire dans les même session.
Mais honnêtement, je ne trouve pas quel est le problème avec votre connexion nommée. J'ai couru quelques tests et tout semble correct. J'ai testé avec PostgreSQL 9.1.
Le message d'erreur implique que dblink s'attend à un
connstr
. Qui ne se produit que si le premier paramètre ne correspond à aucuneconnname
dans l'existence En bref: la connexion'myconn'
n'est pas trouvé qui me fait soupçonner que vous ne faites pas appeldblink()
dans le même session commedblink_connect()
.Merci. La session semble être la question. L'exécution de requêtes dans différentes fenêtres dans pgAdmin semble traiter chaque fenêtre comme une session séparée. L'exécution de requêtes dans la même fenêtre, l'un après l'autre fonctionne.
Oui, dans pgAdmin chaque fenêtre de l'éditeur de SQL exécute une session séparée. Les tables temporaires ou dblink les connexions ne sont visibles que dans la même fenêtre (session).
OriginalL'auteur Erwin Brandstetter