174 votes

Obtention de "[archiver] unsupported version (1.13) in file header" lors de l'exécution de pg_restore

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 à jour, la restauration fonctionnait bien.

Je cours

pg_restore --verbose --clean --no-acl --no-owner -h localhost -d database_name backup.dump

mais j'obtiens cette erreur :

pg_restore : [archiver] version non supportée (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 gemmes pg. Je peux exécuter rake db:create y db:migrate très bien.

200voto

jumichot Points 1955

Vous devez mettre à jour votre postgres local pour obtenir le dernier correctif de sécurité du 2018-03-01, comme suit. Heroku a fait le 1er mars. Vous avez besoin d'une des dernières versions 10.3 , 9.6.8 , 9.5.12 , 9.4.17 y 9.3.22 .

Le correctif de sécurité peut être trouvé ici https://www.postgresql.org/about/news/1834/ .

Il semble que le patch ait modifié pg_dump, c'est probablement pourquoi nous ne pouvons plus utiliser pg_restore sans ce patch pour le dump de Heroku (avec le patch appliqué).

90 votes

brew upgrade postgresql brew postgresql-upgrade-database

2 votes

Avec Linux Mint, ma version est 9.5.11 et il est dit qu'elle est à jour. Comment puis-je le forcer à utiliser la dernière version en utilisant apt-get ?

0 votes

Postgresql 9.5.12 est maintenant dans le dépôt officiel de la version xenial d'Ubuntu 16.04. packages.ubuntu.com/xenial/postgresql-9.5

19voto

Canuk Points 237

J'ai rencontré le même problème aujourd'hui, je ne sais pas si quelque chose a changé du côté de Heroku, parce que localement j'exécute la 9.6 mais ma base de données sur Heroku est la 9.4, donc il ne semble pas s'agir de la différence de point de version (cela fonctionnait jusqu'à aujourd'hui).

Si vous utilisez l'application Postgres.app ( https://postgresapp.com/ ) sur un Mac, assurez-vous que vous exécutez v2.1.3 (au moment où nous écrivons ces lignes, il s'agit de la version la plus récente). Lorsque vous mettez à niveau Postgres.app, vous obtenez la dernière version de Postgres (ce qui est probablement à l'origine de la disparité que vous rencontrez actuellement - Heroku a mis à niveau pour le dernier correctif de sécurité, et votre machine locale peut ne pas l'avoir).

J'ai dû mettre à niveau Postgres.app de 2.1.0 à 2.1.3 et cela a résolu le problème.

13voto

Jim Padilla Points 129

C'est la première fois que j'ai ce problème, voici comment j'ai restauré la base de données Heroku sur mon local :

$ rails db:drop
$ heroku pg:pull DATABASE_URL <insert local DB name> --app <app-name>

0 votes

Jolie solution de contournement, je ne connaissais pas cette histoire. heroku pg:pull . Mais ce n'est pas une solution appropriée, car vous ne pouvez toujours pas restaurer localement un dump heroku précédent, et je suppose aussi que cela utilise la ressource de la base de données en direct pendant le tirage.

1 votes

Je ne sais pas à quoi servent les votes négatifs. L'OP demande littéralement "J'essaie de télécharger une copie de la base de données et de la restaurer localement" et je réponds à cette question spécifique.

12voto

cbx Points 131

Depuis hier (03/01/2018), nous avons également rencontré des problèmes pour restaurer une sauvegarde depuis Heroku fonctionnant sur PostgreSQL 9.5 :

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 corrigé le problème.

7voto

Diego Aragão Points 71

Pour ceux qui essaient de mettre à jour postgresql dans Ubuntu sans succès (comme le commentaire de Johan ci-dessus), essayez d'utiliser le dépôt apt de 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X