2016-03-26 6 views
2

Я пытаюсь скопировать мою локальную базу данных PostgreSQL в приложение Heroku с помощью pg_dump/pg_restore utils. Ведение в соответствии с официальным гидом Heroku в: https://devcenter.heroku.com/articles/heroku-postgres-import-exportCant pg_restore на Heroku: «не удалось прочитать из входного файла: конец файла»

Итак, я сделал дамп:
pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dump

Тогда я уже загрузил его на достижимы через веб-сервер (и его действительно достижима, я проверил его, загрузив файл с wget и pg_restore ing it - отлично работает).

Тогда я попытался восстановить в на Heroku и не повезло:

[email protected]:~/projects/gop/gop_flask$ heroku pg:backups restore 'MY_URL_HERE' postgresql-corrugated-15763 
r010 ---restore---> DATABASE 
An error occurred and your backup did not finish. 

Please run `heroku pg:backups info r010` for details. 

Вот подробности:

[email protected]:~/projects/gop/gop_flask$ heroku pg:backups info r010 
=== Backup info: r010 

Database: BACKUP 
Started:  2016-03-26 20:15:32 +0000 
Finished: 2016-03-26 20:15:32 +0000 
Status:  Failed 
Type:  Manual 
Backup Size: 23.9MB 
=== Backup Logs 
... a bunch of logs here ... 
2016-03-26 20:15:32 +0000: pg_restore: processing data for table "cards" 
2016-03-26 20:15:32 +0000: waiting for restore to complete 
2016-03-26 20:15:32 +0000: pg_restore: [custom archiver] could not read from input file: end of file 
2016-03-26 20:15:32 +0000: restore done 
2016-03-26 20:15:32 +0000: waiting for download to complete 
2016-03-26 20:15:32 +0000: download done 

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

Благодарим вас за консультацию.

+0

Это решение может иметь отношение к некоторым людям: http://stackoverflow.com/questions/42433414/heroku-database-restore-issue/42435490#42435490 –

ответ

3

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

Сделайте дамп в простом формате SQL:
pg_dump --no-owner mydb > mydb.dump

Возможно, вам придется переключиться на пользователя, который имеет права доступа к вашему БД, например, postgres. Итак, sudo su postgres, а затем сделайте дамп.

А затем загрузить его с psql инструмента:
[email protected]:~/path/to/your/dump$ heroku pg:psql < mydb.dump