Подтвердить что ты не робот

Почему pg_restore успешно возвращается, но не восстанавливает мою базу данных?

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

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

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

pg_restore --create --exit-on-error --verbose --dbname=postgres <backup_file>

Ответ 2

pg_restore --create --exit-on-error --verbose --username=postgres -h localhost --dbname=my_db_name <backup_file>

Ответ 3

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

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

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

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

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