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/07/2009 10:44:04

Remigio
Membre

pg_restore: erreur sur la modification du schéma

Bonjour à tous.

Voilà le souci:

Je dispose d'une base A de prod et d'une base B de recette.Chaque jour, je souhaite alimenter la base B de recette avec les données de la base A. Je souhaite tout charger: données et objets, et effacer l'existant sur la base B.Chacune des deux bases est gérée par un user différent.

Pour cela, j'exécute une pg_dump sur la base A en utilisant l'option -O pour ne pas attribuer de droit aux objets dans les scripts:

pg_dump -f fichier.tar -F t -O -UuserA baseA

et un pg_restore sur la base B avec l'option -O pour ne pas réattribuer de droit, l'option -c pour effacer l'existant et recréer et l'option -x pour empêcher la restauration des droits d'accès.


pg_restore -dbaseB -UuserB-O -c -x fichier.tar

Mon souci, c'est que la base a été créée avec postgres avec l'option owner userB et le schéma public appartient à postgres. Et pg_restore essaye de supprimer le schéma, de le recréer et de le commenter mais userB n'a apparemment pas les droits pour le faire.

pg_restore: [programme d'archivage (db)] Erreur pendant le traitement de la TOC (« PROCESSING TOC ») :
pg_restore: [programme d'archivage (db)] Erreur à partir de l'entrée TOC 6 ; 2615 2200 SCHEMA public postgres
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR:  doit être le propriétaire du schéma public
    Command was: DROP SCHEMA public;
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR:  le schéma public existe déjà
    Command was: CREATE SCHEMA public;
pg_restore: [programme d'archivage (db)] Erreur à partir de l'entrée TOC 1975 ; 0 0 COMMENT SCHEMA public postgres
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR:  doit étre le propriétaire du schéma public
    Command was: COMMENT ON SCHEMA public IS 'standard public schema';
ATTENTION : erreurs ignorées lors de la restauration : 3

J'ai bien fait un GRANT ALL ON SCHEMA PUBLIC TO userB, mais ça ne change rien.

Quelqu'un aurait une idée pour résoudre ce problème ou le contourner (hormis les 3 erreurs, les données s'importent très bien, tout fonctionne).


Merci

Hors ligne

#2 09/07/2009 11:44:52

Haseo
Membre

Re : pg_restore: erreur sur la modification du schéma

Question : Et pourquoi ne pas tout simplement utiliser l'utilisateur posgres qui est quand même l'utilisateur pour la maintenance ???

De plus, j'aurais tendance à utiliser les options -d Mabase -U user dans le psql au lieu de le mettre dans l'archive du restore.

Hors ligne

#3 09/07/2009 11:51:04

Remigio
Membre

Re : pg_restore: erreur sur la modification du schéma

Si je fait ces opérations avec le user postgres, les objets seront créés sous le nom de postgres non ? J'aimerais bien que toute la base et ce qui la compose appartiennent au user que j'ai associé à la base. En règle générale, je n'utilise le user postgres que pour des opération d'administration.

Hors ligne

#4 09/07/2009 14:09:05

Haseo
Membre

Re : pg_restore: erreur sur la modification du schéma

Autant pour moi, j'ai lu un peu rapidement et ma réponse passait par la simplicité.

D'après les messages d'erreurs que vous avez, c'est une erreur de propriété du schéma pour résoudre cela, vous pouvez essayer la commande suivante :

ALTER SCHEMA [nom du schema] OWNER TO userB;

Cela devrait résoudre votre problème puisqu'ensuite le schéma appartiendra au userB et le supprimer ne posera plus de problème.

La base de destination à sans doute été crée avec le mauvais user; je suppose que le propriétaire de la base n'est pas userB.

Dernière modification par Haseo (09/07/2009 14:16:00)

Hors ligne

#5 09/07/2009 14:24:09

Remigio
Membre

Re : pg_restore: erreur sur la modification du schéma

Effectivement, c'était simple mais je bloquais smile

Merci pour ta réponse. Merci en règle générale pour les posteurs réguliers ici qui répondent rapidement à toutes nos questions (même idiotes).

Hors ligne

Pied de page des forums