Невозможно восстановить postgres дамп на героку - PullRequest
2 голосов
/ 11 апреля 2020

Я использую эту команду для локального создания дампа PGPASSWORD=admin pg_dump -h 127.0.0.1 -p 5432 -U postgres --no-owner --no-acl -f database.dump, и my успешно создан.

затем загрузил этот дамп в dropbox и сделал его доступным c с этой ссылкой http://www.dropbox.com/s/rsqeiuqzusejz5x/database.dump?dl=1 уведомление, что я изменился https до http и dl=0 до dl=1 (dl = 1 для загрузки)

затем на моем терминале я запускаю эту команду heroku pg:backups:restore "http://www.dropbox.com/s/38prh2y7pdwhqqj/database.dump?dl=1" --confirm tranquil-anchorage-39635

но я получаю эту ошибку

 !    An error occurred and the backup did not finish.
 !
 !    pg_restore: error: did not find magic string in file header
 !    waiting for restore to complete
 !    pg_restore finished with errors
 !    waiting for download to complete
 !    download finished successfully
 !
 !    Run heroku pg:backups:info r010 for more details.

Я перепробовал всю официальную документацию и различные ответы, но, похоже, ничего не работает.

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

В ходе дальнейших исследований я обнаружил, что команда pg_restore при восстановлении файла дампа ожидает определенный формат, который необходимо указать при создании файла дампа. Поэтому после выполнения этой команды произошла ошибка pg_restore: error: did not find magic string in file header.

pg_dump -h <localhost> -p <port> -U <username> --format=c <database_name> > daman.dump. Вам будет предложено ввести пароль для пользователя.

Уведомление --format=c в приведенной выше команде , Это создаст файл дампа в формате, который может быть восстановлен с помощью pg_restore, также я должен отметить, что файл дампа, созданный таким образом, не читается текстовым редактором, таким как блокнот или vscode, в отличие от случая, когда --format=c не используется.

для получения более подробной информации см. документацию здесь

0 голосов
/ 11 апреля 2020

Попробуйте запустить pg_dump с опцией -F c (настраиваемый формат), как описано в https://devcenter.heroku.com/articles/heroku-postgres-import-export:

 pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dump
...