Перенос базы данных с локальной разработки на Heroku-Django 1.8

После создания базы данных с помощью heroku addons:create heroku-postgresql:hobby-dev я попытался перенести свою локальную базу данных в базу данных heroku. Итак, я сначала побежал

heroku python manage.py migrate. После этого я создал файл дампа своей локальной базы данных, используя pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dump. Я загрузил свой файл mydb.dump в Dropbox, а затем использовал следующую команду для загрузки дампа в мою базу данных heroku.

 heroku pg:backups restore'https://www.dropbox.com/s/xkc8jhav70hgqfd/mydb.dump?' HEROKU_POSTGRESQL_COLOR_URL

Но это выдает следующую ошибку -

 r004 ---restore---> HEROKU_POSTGRESQL_PURPLE
 [0KRunning... 0.00B..
 [0KAn error occurred and your backup did not finish.
 Please run `heroku pg:backups info r004` for details.

И при запуске heroku pg:backups info r004 я получаю -

Database:    BACKUP
Started:     2015-06-25 18:19:37 +0000
Finished:    2015-06-25 18:19:38 +0000
Status:      Failed
Type:        Manual
Backup Size: 0.00B
=== Backup Logs
2015-06-25 18:19:38 +0000: waiting for restore to complete
2015-06-25 18:19:38 +0000: pg_restore: [archiver] did not find magic string in file header
2015-06-25 18:19:38 +0000: restore done
2015-06-25 18:19:38 +0000: waiting for download to complete
2015-06-25 18:19:38 +0000: download done

В сети мало информации об этой ошибке, и я не могу понять, в чем проблема.


person WutWut    schedule 25.06.2015    source источник
comment
насколько велика база данных?   -  person Tommaso Barbugli    schedule 25.06.2015
comment
@TommasoBarbugli 7,4 МБ. У меня есть бесплатный аккаунт на героку. Не слишком ли велик размер базы данных?   -  person WutWut    schedule 25.06.2015
comment
На самом деле проблема может быть совершенно в другом: Dropbox обычно не предлагает необработанный файл по этой ссылке. Вместо этого он обслуживает страницу загрузки. Добавьте ?raw=1 в конец URL-адреса, чтобы получить необработанный файл и использовать его с heroku pg:backups.   -  person Jelko    schedule 02.08.2016


Ответы (4)


Если база данных небольшая, и вам повезло, это может сделать это.

pg_dump --no-acl --no-owner -h localhost -U myuser myd | heroku pg:psql
person Tommaso Barbugli    schedule 25.06.2015
comment
Это сработало. Интересно, почему выражение, которое я использовал, не сработало, поскольку это то, что рекомендует документация heroku для импорта базы данных. - person WutWut; 25.06.2015
comment
Ты спасатель жизни, чувак. - person Mike Johnson Jr; 04.06.2017
comment
я получаю сообщение об ошибке: отсутствует обязательный флаг с этим cmd - person Ait Yahia Idir; 03.05.2020

У меня тоже была эта ошибка, и мое решение было немного другим. Проблема была связана с используемым форматом. Мне нужно было использовать --format=c при сбросе базы данных.

Чтобы решить эту проблему, я снова сбросил базу данных, используя --format=c

pg_dump --no-acl --no-owner --format=c database_name > db.dump

Затем импортируйте его в мое приложение heroku

heroku pg:backups restore 'url_for_db.dump' DATABASE_URL

Надеюсь, это поможет кому-то в будущем!

person Ignacio Palladino    schedule 01.02.2016
comment
Я буквально только что вошел в систему, чтобы проголосовать за вас и прокомментировать. Это спасло мой бекон и стало решением для меня. Большое спасибо!!! - person Nick Schwaderer; 20.02.2017
comment
--format=c вот чего не хватало, отлично, спасибо - person Radek; 03.09.2017

Вы можете использовать: heroku pg:push mylocaldb HEROKU_POSTGRESQL_MAGENTA --app sushi

источник: https://devcenter.heroku.com/articles/heroku-postgresql#pg-push

person Dinatih    schedule 22.09.2016

Для пользователей Windows;

heroku pg:backups:restore "https://s3.amazonaws.com/me/items/3H0q/mydb.dump" DATABASE_URL

Согласно официальной документации, обязательно используйте двойные кавычки вокруг удаленного URL-адреса, если вы используете окна. см. официальные документы

person shaded    schedule 07.09.2017