Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 28/03/2015 18:42:06
- grandegargouille
- Membre
Interrogation des tables système via ODBC
Bonjour,
J'utilise postgresql 9.4.1-1 x64 sous Window 7 et l'ODBC Unicode x64 v 9.03.03.00
Lorsque je fais, via ODBC, une requête sur une table système (par exemple "select * from Information_Schema.Tables") j'obtiens l'erreur "la colonne « ctid » n'existe pas; Error while executing the query".
Les requêtes sur les tables créées fonctionnent bien
Hors ligne
#2 29/03/2015 17:22:29
- gleu
- Administrateur
Re : Interrogation des tables système via ODBC
Cela ressemble à une erreur de configuration de psqlodbc ou à un bug de psqlodbc. Quel requête est envoyée à PostgreSQL par ce driver ? (attention, je ne demande pas quelle requête vous exécutez, mais celle que reçoit PostgreSQL)
Guillaume.
Hors ligne
#3 30/03/2015 12:25:01
- grandegargouille
- Membre
Re : Interrogation des tables système via ODBC
Désolé, je ne comprends pas le distinguo de votre question.
Hors ligne
#4 30/03/2015 16:32:46
- gleu
- Administrateur
Re : Interrogation des tables système via ODBC
Vous envoyez "select * from Information_Schema.Tables" au driver psqlodbc. Cette requête ne cherche pas à récupérer une colonne ctid (qui est une colonne système, donc non concernée quand on utilise l'étoile). Du coup, psqlodbc doit certainement modifier la requête pour réclamer cette colonne supplémentaire. Ou exécuter d'autres requêtes, dont une qui réclamerait cette colonne. Bref, il faudrait savoir quelle requête demande justement de cette colonne.
Guillaume.
Hors ligne
#5 30/03/2015 17:44:33
- grandegargouille
- Membre
Re : Interrogation des tables système via ODBC
La requête est
SELECT table_name FROM information_schema.tables WHERE table_schema = 'migsite' AND table_type = 'BASE TABLE' AND table_name LIKE 'mig%'
J'ai essayé sans la clause WHERE, mais cela ne change rien. J'ai également essayé de retourner une autre colonne, ou d'en retourner plusieurs. J'ai enfin tenté SELECT 1 FROM information_schema.table.
Hors ligne
#6 30/03/2015 17:54:31
- grandegargouille
- Membre
Re : Interrogation des tables système via ODBC
Note : Je viens d'essayer une autre table système (SELECT relname FROM pg_class) et cela fonctionne !
Existe-il des équivalents pg_xxx aux tables information_schema.table et information_schema.columns ?
Hors ligne
#7 30/03/2015 19:08:31
- grandegargouille
- Membre
Re : Interrogation des tables système via ODBC
Je continue ...
SELECT tablename FROM pg_table renvoie la même erreur
Pour les colonnes, c'est par contre ok avec
SELECT attname FROM pg_attribute WHERE attnum > 0 AND attrelid = 'nom_schema.nom_table'::regclass AND NOT attisdropped ORDER BY attnum
Hors ligne
#8 30/03/2015 22:24:01
- gleu
- Administrateur
Re : Interrogation des tables système via ODBC
Vous avez une erreur à chaque fois que vous cherchez à lire une vue. Vous n'avez pas d'erreur avec les tables. Bref, ça ressemble à un bug du driver psqlodbc.
Guillaume.
Hors ligne
#9 30/03/2015 23:43:43
- rjuju
- Administrateur
Re : Interrogation des tables système via ODBC
À priori le problème n'est pas vraiment nouveau, ni facile à régler. Par exemple: http://www.postgresql.org/message-id/40 … hemesh.biz
Julien.
https://rjuju.github.io/
Hors ligne
Pages : 1