PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 09/02/2024 16:14:37

Xavier_WX
Membre

plus d'accès à la structure de mes tables !

Bonjour,
J'ai un problème étrange ...
J'ai souhaité me reconnecter à ma base postgresql version 12.17 (installée localement sous ubuntu 20).
Mis à part de nouvelles installations logicielles (mais rien à voir avec postgres), je n'ai rien changé depuis ma dernière requête qui s'était passé sans soucis.
Aujourd'hui il m'est par exemple impossible de lister les champs de certaines de mes tables avec la commande \d qui ne retourne rien ! Par contre j'arrive à effectuer des requêtes et à obtenir des enregistrements lorsque je fais une requête sur cette même table !... mais pas tout le temps :-(
J'ai essayé de créer une nouvelle base et d'y injecter les données d'une ancienne sauvegarde ... le problème reste le même.
Mis à part réinstaller postgres, auriez vous d'autres pistes à me conseiller pour résoudre mon problème ?
Merci

Hors ligne

#2 12/02/2024 10:45:20

gleu
Administrateur

Re : plus d'accès à la structure de mes tables !

C'est en effet très étonnant. Quand vous faites \d nom_table dans psql, il ne vous rend rien ou il vous rend l'invite de commande ? (s'il ne vous rend rien, c'est que le serveur est bloqué à faire quelque chose alors que s'il vous rend l'invite, c'est qu'il a terminé son travail).


Guillaume.

Hors ligne

#3 12/02/2024 16:09:21

Xavier_WX
Membre

Re : plus d'accès à la structure de mes tables !

Bonjour,
Avec \d le serveur me rend la main, et parfois la structure des tables ... mais pas toujours. Et là je n'arrive plus à lui faire afficher le résultat d'une requête comme parfois auparavant ...
Je vais essayer demain avec une sauvegarde de ma base sur un autre ordi.
Bonne journée,
Xavier

Hors ligne

#4 13/02/2024 10:54:10

gleu
Administrateur

Re : plus d'accès à la structure de mes tables !

N'auriez vous pu exécuter un \o fichier, ce qui a pour effet d'envoyer le résultat dans ce fichier ? un moyen d'annuler tout "\o fichier" est de faire un \o seul. Par exemple :

postgres@r16 =# select * from pg_am;                                                                                                                                                     
┌──────┬────────┬──────────────────────┬────────┐                                                                                                                                              
│ oid  │ amname │      amhandler       │ amtype │                                                                                                                                              
├──────┼────────┼──────────────────────┼────────┤                                                                                                                                              
│    2 │ heap   │ heap_tableam_handler │ t      │                                                                                                                                              
│  403 │ btree  │ bthandler            │ i      │                                                                                                                                              
│  405 │ hash   │ hashhandler          │ i      │                                                                                                                                              
│  783 │ gist   │ gisthandler          │ i      │
│ 2742 │ gin    │ ginhandler           │ i      │
│ 4000 │ spgist │ spghandler           │ i      │
│ 3580 │ brin   │ brinhandler          │ i      │
└──────┴────────┴──────────────────────┴────────┘
(7 rows)

postgres@r16 =# \o /tmp/pouet
postgres@r16 =# select * from pg_am;
postgres@r16 =# \d pg_am                                                                  
postgres@r16 =# \o
postgres@r16 =# select * from pg_am;
┌──────┬────────┬──────────────────────┬────────┐
│ oid  │ amname │      amhandler       │ amtype │
├──────┼────────┼──────────────────────┼────────┤
│    2 │ heap   │ heap_tableam_handler │ t      │
│  403 │ btree  │ bthandler            │ i      │
│  405 │ hash   │ hashhandler          │ i      │
│  783 │ gist   │ gisthandler          │ i      │
│ 2742 │ gin    │ ginhandler           │ i      │
│ 4000 │ spgist │ spghandler           │ i      │
│ 3580 │ brin   │ brinhandler          │ i      │
└──────┴────────┴──────────────────────┴────────┘
(7 rows)

postgres@r16 =# \d pg_am
                Table "pg_catalog.pg_am"
┌───────────┬─────────┬───────────┬──────────┬─────────┐
│  Column   │  Type   │ Collation │ Nullable │ Default │
├───────────┼─────────┼───────────┼──────────┼─────────┤
│ oid       │ oid     │           │ not null │         │
│ amname    │ name    │           │ not null │         │
│ amhandler │ regproc │           │ not null │         │
│ amtype    │ "char"  │           │ not null │         │
└───────────┴─────────┴───────────┴──────────┴─────────┘
Indexes:
    "pg_am_oid_index" PRIMARY KEY, btree (oid)
    "pg_am_name_index" UNIQUE CONSTRAINT, btree (amname)

Guillaume.

Hors ligne

#5 16/02/2024 16:39:47

Xavier_WX
Membre

Re : plus d'accès à la structure de mes tables !

Le \o ne change rien ...
Par contre, lorsque je suis loggé en tant que postgres, tout est OK ! \d fonctionne de même que les select etc ...
J'ai créé un autre utilisateur qui peut aussi avoir accès à toutes ces commandes.
Mais je ne comprends toujours pas pourquoi mon compte initial ne fonctionne plus correctement :-(
Xavier

Hors ligne

#6 16/02/2024 18:04:55

ruizsebastien
Membre

Re : plus d'accès à la structure de mes tables !

Bonjour
et si vous faites (avec une connexion postgres ou autre superuser) :

\dg+ votre_compte_initial

ça donne quoi ?
(remplacer "votre_compte_initial" par le vrai nom de votre user à problème).

Dernière modification par ruizsebastien (16/02/2024 18:05:28)


Cordialement,

Sébastien.

Hors ligne

#7 16/02/2024 18:25:37

ruizsebastien
Membre

Re : plus d'accès à la structure de mes tables !

2ème série de question :
- votre "compte_initial" il sert à quoi ?
- qui est le propriétaire des tables que vous essaiez de voir mais que vous ne voyez pas ?
- qui est le propriétaire des tables que vous pouvez voir ?

Dernière modification par ruizsebastien (16/02/2024 18:26:27)


Cordialement,

Sébastien.

Hors ligne

#8 19/02/2024 17:03:29

Xavier_WX
Membre

Re : plus d'accès à la structure de mes tables !

Bonjour,
La base est installée en local sur mon pc portable.
Mon user qui pose problème est aussi mon nom de session, et je suis déclaré comme SuperUser lorsque je tape la commande \dg+
Je suis le propriétaire de toutes les tables déclarées ...
Quand je suis connecté sous mon nom, lorsque je tape \d pour certaines de mes tables, rien ne s'affiche et je retourne à l'invite de commande. Pour d'autres la structure s'affiche bien ...
Quand je suis connecté en tant que postgres (ou un autre utilisateur SuperUser que j'ai créé pour l'occasion) j'ai bien accès à la structure de toutes mes tables ...
Merci !
Xavier

Hors ligne

#9 20/02/2024 07:54:51

rjuju
Administrateur

Re : plus d'accès à la structure de mes tables !

Peut-etre que ces 2 roles n'ont pas le meme search_path?  \d ne renvoie que les tables qui sont visibles sans utiliser de schema (donc dans un schema present dans le search_path, et en cas de tables du meme nom seule la premiere sera affichee)

Hors ligne

Pied de page des forums