Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
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
Effectivement, c'était simple mais je bloquais
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
Pages : 1