J'ai vidé une sauvegarde propre, pas de propriétaire pour la base de données Postgres avec la commande
pg_dump sample_database -O -c -U
Plus tard, lorsque je restaure la base de données avec
psql -d sample_database -U app_name
Cependant, j'ai rencontré plusieurs erreurs qui m'empêchent de restaurer les données:
ERROR:  must be owner of extension plpgsql
ERROR:  must be owner of schema public
ERROR:  schema "public" already exists
ERROR:  must be owner of schema public
CREATE EXTENSION
ERROR:  must be owner of extension plpgsqlJ'ai fouillé dans le texte brut pg_dumpgénéré par SQL et j'ai trouvé qu'il contient du SQL
CREATE SCHEMA public;
COMMENT ON SCHEMA public IS 'standard public schema';
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';Je pense que les causes sont que l'utilisateur app_namen'a pas les privilèges pour modifier le publicschéma et plpgsql.
Comment pourrais-je résoudre ce problème?
plpgsql, alorsDROP EXTENSION plpgsqlavant vouspg_dump. C'est plus sûr que de faire de votre application un super utilisateur, et c'est plus pratique que d'ignorer les erreurs (quelles bombes si vous utilisez--single-transactionou-v ON_ERROR_STOP=1). C'est un problème connu, [discuté en détail par les développeurs de Postgres | postgresql.org/message-id/... mais non corrigé à partir de la version 9.3.