J'ai une base de données Postgres 8.4 sur un serveur Linux que j'ai vidée à l'aide de la commande suivante:
pg_dump --format=c --exclude-table=log --file=/path/to/output my_db
Je transfère ensuite le fichier créé sur ma machine Windows 7 locale et tente de restaurer le fichier sur mon instance Postgres 8.4 locale à l'aide de la commande suivante:
pg_restore --create --exit-on-error --verbose c:\path\to\file
La commande de restauration génère de nombreuses sorties affirmant avoir créé ma base de données, s'y connecter, puis créer toutes les autres tables comme prévu. Cependant, lorsque je consulte les bases de données sur ma machine locale via pgAdmin, la base de données restaurée n'existe pas du tout.
Dans une tentative de dépannage, j'ai essayé la commande suivante:
pg_restore --create --exit-on-error --verbose --Host=blahblah --username=no_one c:\path\to\file
Lorsque j'exécute cette commande, même si l'hôte et le nom d'utilisateur fournis sont complètement absurdes, j'obtiens toujours la même sortie exacte de la commande sans aucune erreur.
Quelqu'un a-t-il déjà rencontré cela ou sait-il ce qui pourrait en être la cause?
Vous devez ajouter le nom d'une base de données valide à laquelle vous vous connectez initialement, sinon elle videra simplement le contenu dans STDOUT:
pg_restore --create --exit-on-error --verbose --dbname=postgres <backup_file>
C'est toujours déroutant, j'ai essayé d'exécuter cette chose que --dbname devrait être le db que je veux créer.
pg_restore --create --exit-on-error --verbose --dbname=jiradb jiradb.tar
FAUX!!
Il devrait être littéralement --dbname postgres, --create créera alors la vraie base de données à partir du nom dans le fichier. Dans mon cas, j'ai restauré à partir d'une sauvegarde tar avec
pg_restore --create --exit-on-error --verbose --dbname=postgres jiradb.tar