Je viens de passer à Postgres 10.2 sur Mac OS qui correspond à 10.2 sur Heroku. J'essaie de télécharger une copie de la base de données et de la restaurer localement. Avant la mise à niveau, la restauration fonctionnerait correctement.
Je cours
pg_restore --verbose --clean --no-acl --no-owner -h localhost -d database_name backup.dump
mais j'obtiens cette erreur:
pg_restore: [archiveur] version non prise en charge (1.13) dans l'en-tête du fichier
La base de données semble fonctionner correctement. C'est une application Rails et j'ai mis à jour les gems. Je peux exécuter rake db:create
et db:migrate
très bien.
Vous devez mettre à niveau votre postgres local pour obtenir le dernier correctif de sécurité du 2018-03-01, comme l'a fait Heroku
le 1er mars. Vous avez besoin de l’une des dernières versions 10.3
, 9.6.8
, 9.5.12
, 9.4.17
et 9.3.22
.
Le correctif de sécurité peut être trouvé ici https://www.postgresql.org/about/news/1834/ .
Il semble que le correctif pg_dump ait été modifié, c'est probablement pourquoi nous ne pouvons plus utiliser pg_restore sans ce correctif pour le dump de Heroku (avec le correctif appliqué).
J'ai rencontré le même problème aujourd'hui, je ne sais pas si quelque chose a changé du côté de Heroku, car localement, je tourne sous la version 9.6, mais ma base de données sur Heroku est de 9,4. travaillait jusqu'à aujourd'hui.)
Si vous utilisez le fichier Postgres.app ( https://postgresapp.com/ ) sur un Mac, assurez-vous que vous exécutez v2.1.3
(la version la plus récente est celle en cours d'écriture). Lorsque vous mettez à niveau Postgres.app, vous obtenez la dernière version du correctif de Postgres (ce qui est probablement à l'origine du décalage que vous rencontrez actuellement - Heroku a été mis à niveau pour le dernier correctif de sécurité, et votre ordinateur local ne l'a peut-être pas).
J'ai dû mettre à jour Postgres.app de 2.1.0 à 2.1.3 et le problème a été résolu.
Depuis hier (03/01/2018), nous avons également eu des problèmes pour restaurer une sauvegarde de Heroku s'exécutant sur PostgreSQL ™:
pg_restore: [archiver] unsupported version (1.13) in file header
La mise à niveau de notre version PostgreSQL de 9.5.11 à 9.5.12 a résolu le problème.
Pour la première fois de ce problème, voici comment j'ai restauré la base de données Heroku dans ma section locale:
$ Rails db:drop
$ heroku pg:pull DATABASE_URL <insert local DB name> --app <app-name>
Pour ceux qui tentent de mettre à niveau postgresql dans Ubuntu sans succès (comme le commentaire de Johan ci-dessus), essayez d’utiliser le référentiel PostgreSQL, comme indiqué dans les instructions officielles de téléchargement de PostgreSQL: https://www.postgresql.org/download/linux/ubuntu/
deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | Sudo apt-key add -
Sudo apt-get update
La solution pour moi impliquait les deux mettre à jour mon Postgres.app et mon homebrew local PostgreSQL.
Mettre à jour mon Postgres.app via la réponse de Canuk:
Mettez à jour mon homebrew local PostgreSQL via le commentaire de gerry3 sur la réponse acceptée:
brew upgrade postgresql
brew postgresql-upgrade-database
Je ne recommande pas de mettre à niveau votre base de données vers une nouvelle version majeure localement (appliquez des correctifs de sécurité) uniquement pour résoudre ce problème, car vous souhaitez que cela corresponde à la version que vous avez en production.
Cela a résolu le problème sous Ubuntu 16.04, en restaurant à partir d'une base de données Heroku.
Tout d’abord, assurez-vous que vous avez le repo postgresql mentionné par diego. Ensuite, installez le client mis à niveau.
Sudo apt-get update && Sudo apt-get install postgresql-client-10
Si vous êtes Ubuntu 17.04 ou 17.10, notez que le dépôt zesty de PostgreSQL n'a pas a le client mis à jour dont vous avez besoin. Vous voudrez plutôt utiliser le repo xenial Postgres.
Avait ce problème sur Windows en utilisant pgAdmin 3.
La mise à niveau de pgAdmin 3 vers pgAdmin 4 a résolu le problème pour moi.
Si vous utilisez un outil tiers, tel que PgAdmin, pour restaurer le fichier fichier de vidage fourni, la restauration peut échouer même avec le fichier la version installée de Postgres étant à jour. Cela est dû à des outils tiers regroupant souvent leurs propres versions de pg_restore binaire, qui peut ne pas être à jour . https://help.heroku.com/YNH1ZJUS/why-am-i-getting-pg_restore-archiver-unsupported-version-1-13-in-file-header-errorwith-pg_restore
J'ai rencontré ce problème sur pgadmin III et j'ai pu le résoudre en changeant l'emplacement des fichiers binaires:
Menu Fichier> Options> Chemins binaires, puis changez le "chemin de la corbeille PG" en postgresql/9.x/bin au lieu de ProgramFiles/pgadmin. La restauration a bien fonctionné par la suite.
Vous utilisez une ancienne version du binaire pg_restore qui ne prend pas en charge la restauration du fichier de vidage fourni. Assurez-vous d’utiliser la dernière version de Postgres, qui doit être supérieure à la version suivante: https://www.postgresql.org/about/news/1834/ (10.3, 9.6.8, 9.5.12 , 9.4.17 et 9.3.22).
Vous pouvez vérifier la version de pg_restore que vous utilisez en exécutant pg_restore --version.
Si vous utilisez un outil tiers, tel que PgAdmin, pour restaurer le fichier de vidage fourni, la restauration peut échouer même si la version Postgres installée est à jour. Cela est dû au fait que des outils tiers regroupent souvent leurs propres versions du binaire pg_restore, qui peuvent ne pas être à jour.
Voici comment j'ai résolu le problème sur Ubuntu (16.04 LTS) où pg_restore/pg_dump m'a donné une version plus ancienne, de psql
$ pg_restore --version
pg_restore (PostgreSQL) 9.4.8
$ psql --version
psql (PostgreSQL) 9.5.14
Le problème est que plusieurs versions de pg sont installées et que pg_restore pointe vers la version précédente.
$ pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
9.4 main 5432 online postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log
9.5 main 5433 online postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
Le correctif consiste à créer un fichier ~/.postgresqlrc pointant vers la version correcte
$ cat ~/.postgresqlrc
9.5 main *
Une fois que cela est fait, pg_restore pointe vers la version correcte et la commande est exécutée.
Détails donnés ici: https://serverfault.com/questions/610777/wrong-version-of-pg-dump-on-ubuntu
Je rencontrais la même erreur. J'ai mis à jour localement postgresql 10.3 et le problème a été résolu pour moi.
Pour les fenêtres:
Ouvrez l'invite de commande (cmd
), puis accédez à l'emplacement C:\Program Files\PostgreSQL\9.6\bin
et exécutez les commandes suivantes:
pg_restore -U username -d dbname -1 filename.dump
pg_restore -U postgres -d app -1 G:\app09-07-2019.backup
J'espère que cela vous aidera