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 02/03/2022 10:47:01

ced
Membre

Erreur de restauration due à un rôle qui n'existe plus

Bonjour,

J'ai un serveur dont je fais la sauvegarde par pg_dump et la restauration par pg_restore.
PostGIS est installée comme extension sur le serveur.
Or, lors de la restauration, une erreur apparaît systématiquement lors de la restauration des droits sur la table spatial_ref_sys :

pg_restore: erreur : could not execute query: ERREUR:  le rôle « 16430 » n'existe pas
La commande était : REVOKE ALL ON TABLE public.raster_columns FROM "16430";

Dans la vue système pg_role, il n'y a aucun utilisateur avec l'OID 16430 (qui doit correspondre à un utilisateur qui a existé puis a été supprimé, parce que j'ai des utilisateurs avec l'OID 16429 et 16431).
Quand j'affiche les droits sur la table via psql, aucune mention spéciale n'apparaît :

\dp spatial_ref_sys;
                                             Droits d'accès
 Schéma |       Nom       | Type  |      Droits d'accès       | Droits d'accès à la colonne | Politiques 
--------+-----------------+-------+---------------------------+-----------------------------+------------
 public | spatial_ref_sys | table | postgres=arwdDxt/postgres+|                             | 
        |                 |       | =r/postgres               |                             | 
(1 ligne)

Rien non plus dans les droits d'accès par défaut :

\ddp
           Droits d'accès par défaut
 Propriétaire | Schéma | Type | Droits d'accès 
--------------+--------+------+----------------
(0 ligne)

D'où peut venir cette commande de restauration ?
Y a-t-il une solution pour enlever sa génération lors de la sauvegarde ?

Merci d'avance pour votre aide,

Cédric

Hors ligne

#2 02/03/2022 11:14:09

rjuju
Administrateur

Re : Erreur de restauration due à un rôle qui n'existe plus

Bonjour,


Sauf erreur de ma part il s'agit de la table raster_columns, pas spatial_ref_sys?


Y a-t-il des erreurs durant la sauvegarde ?  Que donne cette requête sur la base source:


select relowner, relacl from pg_class where relname = 'raster_columns'

Hors ligne

#3 02/03/2022 12:49:11

ced
Membre

Re : Erreur de restauration due à un rôle qui n'existe plus

Oui, exact, au temps pour moi...
Le résultat est de toute façon le même que sur spatial_ref_sys :

select relowner, relacl from pg_class where relname = 'raster_columns';
 relowner |                 relacl                  
----------+-----------------------------------------
       10 | {postgres=arwdDxt/postgres,=r/postgres}
(1 ligne)

Hors ligne

#4 02/03/2022 13:21:46

rjuju
Administrateur

Re : Erreur de restauration due à un rôle qui n'existe plus

Et pg_dump n'emet aucun message lors de la création de la sauvegarde ?

Hors ligne

#5 02/03/2022 15:22:34

ced
Membre

Re : Erreur de restauration due à un rôle qui n'existe plus

Non, aucun message d'erreur à la création de la sauvegarde.
C'est très curieux...
Pour info, je suis en v12

Hors ligne

#6 02/03/2022 15:49:45

gleu
Administrateur

Re : Erreur de restauration due à un rôle qui n'existe plus

Le pg_dump et le pg_restore sont bien en version 12 ? je parle des outils, pas du serveur.

D'autre part, avec-vous un rôle de nom 16430 ?

Cela se produit aussi avec une nouvelle sauvegarde ?


Guillaume.

Hors ligne

#7 02/03/2022 16:58:57

ced
Membre

Re : Erreur de restauration due à un rôle qui n'existe plus

Oui, pg_dump et pg_restore sont bien en version 12.8 tous les deux.
Et non, je n'ai aucun rôle nommé 16430. Par contre, cette valeur est très proche des OID des autres rôles de l'instance.

Le phénomène se produit avec une nouvelle sauvegarde (test effectué ce matin).

Merci pour votre aide à tous les deux.

Hors ligne

#8 02/03/2022 17:20:47

gleu
Administrateur

Re : Erreur de restauration due à un rôle qui n'existe plus

Je pense que la première chose à faire est de mettre à jour avec la dernière version corrective (12.10 actuellement), et tester si le problème a toujours lieu. Ensuite, je pense que je ferais un pg_dump avec le format plain pour regarder s'il y a bien une requête dans la sauvegarde indiquant un rôle "16430".


Guillaume.

Hors ligne

#9 02/03/2022 19:56:34

ced
Membre

Re : Erreur de restauration due à un rôle qui n'existe plus

Je viens de faire la mise à niveau vers la version 12.10.
Un dump au format plain ne résolvait pas le problème.
En revanche, j'ai mis à jour PostGIS (y compris l'extension postgis_raster) et la ligne a disparu du dump.

Ça semblait donc être un bug plutôt au niveau de PostGIS, corrigé par l'upgrade.
Problème résolu. Encore merci pour votre aide à tous les deux.

Cédric

Hors ligne

Pied de page des forums