Почему pg_restore возвращается успешно, но не восстанавливает мою базу данных? - PullRequest
56 голосов
/ 05 мая 2011

У меня есть база данных Postgres 8.4 на сервере Linux, которую я выгрузил с помощью следующей команды:

pg_dump --format=c --exclude-table=log --file=/path/to/output my_db

Затем я создаю ftp созданный файл на локальном компьютере с Windows 7 и пытаюсь восстановить файл вмой локальный экземпляр Postgres 8.4 с помощью следующей команды:

pg_restore --create --exit-on-error --verbose c:\path\to\file

Команда восстановления генерирует большое количество выходных данных, утверждая, что она создала мою базу данных, подключилась к ней, а затем создала все остальные таблицы, как и ожидалось.Однако, когда я просматриваю базы данных на моем локальном компьютере через pgAdmin, восстановленная база данных вообще не существует.

В попытке устранить неполадки я попытался выполнить следующую команду:

pg_restore --create --exit-on-error --verbose --host=blahblah --username=no_one c:\path\to\file

КогдаЯ запускаю эту команду, хотя имя хоста и имя пользователя являются полной ерундой, но я все равно получаю точно такой же вывод команды без каких-либо ошибок.

Кто-нибудь сталкивался с этим раньше или знает, что может быть вызвано этим?*

Ответы [ 2 ]

106 голосов
/ 05 мая 2011

Вы должны добавить имя действительной базы данных для первоначального подключения, или она просто сбросит содержимое в STDOUT:

pg_restore --create --exit-on-error --verbose --dbname=postgres <backup_file>
3 голосов
/ 14 декабря 2018

Это все еще сбивает с толку, я пытался выполнить эту вещь, что --dbname должно быть БД, которую я хочу создать.

pg_restore --create --exit-on-error --verbose --dbname=jiradb jiradb.tar

НЕПРАВИЛЬНО !!

Это должно быть буквально --dbname postgres, тогда --create создаст реальный БД из имени в файле.В моем случае я восстановил из резервной копии tar с

pg_restore --create --exit-on-error --verbose --dbname=postgres jiradb.tar
...