C'est sur 9.3 mais je me souviens que des choses similaires se sont produites depuis 7.x. Je crée donc une base de données et y installe l'extension plpgsql. Plus tard, je crée un pg_dump et avant de le restaurer dans la base de données, je m'assure qu'il a également l'extension plpgsql. Ensuite, lors de la restauration, cela se produit:
pg_restore: creating EXTENSION plpgsql
pg_restore: creating COMMENT EXTENSION plpgsql
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2053; 0 0 COMMENT EXTENSION plpgsql
pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql
Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
Je crée un tas de scripts et il est assez important pour moi que pg_restore renvoie 0, donc le fait que je puisse simplement ignorer cela ne fait aucun bien. Ce qui me laisse perplexe, c'est que l'IIRC a besoin de créer une extension en tant qu'utilisateur maître de postgres, donc je n'ai aucune idée de pourquoi toutes ces extensions se retrouvent dans mon vidage. Après tout, je ne suis pas propriétaire de la langue / extension?
Quoi qu'il en soit, je serais reconnaissant pour toute suggestion sur la façon de s'en débarrasser. Veuillez noter que je sais comment fonctionnent les commutateurs -l / -L. Cependant, cela semble être beaucoup trop d'efforts pour corriger un seul commentaire d'extension simple.
la source
Réponses:
Pour tous ceux qui recherchent une solution de contournement, la limitation
pg_restore
à un schéma spécifique m'a aidé à contourner ce bogue. Voir /programming//a/11776053/11819la source
-n
drapeauTu peux faire
c'est ce que j'utilise pour importer dans google cloud sql avec postgres.
edit: ajout du curseur de début de ligne pour ne pas exclure les lignes contenant ce texte littéral.
la source
pg_dump | sed 's/DROP EXTENSION/-- DROP EXTENSION/g' | sed 's/CREATE EXTENSION/-- CREATE EXTENSION/g' | sed 's/COMMENT ON EXTENSION/-- COMMENT ON EXTENSION/g'
Utilisez l'
-L
indicateur avec pg_restore après avoir effectué un vidage dans un format de fichier personnalisé.Référence: pg_restore (documentation PostgreSQL 9.3)
Ici, vous pouvez voir que l' inverse est vrai:
la source
Afin d'exporter uniquement le schéma sans aucun autre objet de la base de données, vous pouvez spécifier le nom du schéma à l'aide du paramètre
--schema
la source