Ошибка 404 на героку db:push

Я получаю сообщение об ошибке 404 при попытке передать мою базу данных в Heroku через Taps

(1.9.2@[app_name]_db) heroku db:push --app [app_name]
Loaded Taps v0.3.24
Auto-detected local database: sqlite://db/development.sqlite3
Warning: Data in the app '[app-name]' will be overwritten and will not be recoverable.

 !    WARNING: Destructive Action
 !    This command will affect the app: [app-name]
 !    To proceed, type "[app-name]" or re-run this command with --confirm [app-name]

> [app-name]
Sending schema
Schema:          0% |                                          | ETA:  --:--:--
Saving session to push_201209251425.dat..
!!! Caught Server Exception
HTTP CODE: 404

Раньше команда db:push работала нормально, затем я внес некоторые изменения в свою базу данных, откатив миграции, отредактировав их, а затем повторно мигрировав. Теперь я могу нормально развернуть приложение, но база данных не будет работать — я не знаю, связано ли это с редактированием миграций или нет.

Приложение отлично работает на моей машине, и я хотел устранить любые несоответствия между копией Heroku и моей собственной, поэтому я создал новое приложение и нажал на него. То же самое: приложение Heroku работает, но не получает db:push; это ошибка с тем же 404 выше.

Это служба Heroku временно не работает, или изменение моего приложения вызвало ошибку 404?

Редактировать: журналы heroku не показывают никаких сообщений об ошибках


person Tyler    schedule 25.09.2012    source источник


Ответы (3)


Поддержка Heroku слишком долго не отвечала, поэтому я нашел обходной путь, который связывается с моим экземпляром EC2 напрямую с помощью гема Taps.

  1. Перейдите на панель инструментов Heroku для своей базы данных. Для меня это было на

    https://postgres.heroku.com/databases/[имя_моей_базы_данных]

    хотя я перешел через аддоны.

  2. Нажмите «URL» в «Настройки подключения», должно получиться что-то вроде

    postgres://[имя пользователя]:[пароль]@ec2-[номера_ip_адресов].compute-1.amazonaws.com:[порт]/[имя_базы_данных]

    Скопируйте это значение, я буду ссылаться на него здесь как [EC2_URL]

  3. Установите Taps на гемсете 1.9.2, если у вас его еще нет (не уверен, что 1.9.3 будет работать, не проверял)

  4. Настройте сервер localhost taps для облегчения транзакции, запустив в терминале:

    использует сервер postgres://[local_machine_username]@localhost/[name_from_database.yml] [some_username] [some_password]

    (обратите внимание на пробелы перед логином и паролем)

  5. Далее вы можете самостоятельно обработать транзакцию через другое окно терминала:

    taps pull [EC2_URL] http://[some_username]:[some_password]@localhost:5000

Он должен запускаться и извлекать все ваши данные из локальной базы данных разработки в экземпляр Amazon. Так же можно сделать наоборот, или выбрать другую базу и т.д. Или нет, я не мент.

person Tyler    schedule 26.09.2012

Есть некоторые проблемы с командами heroku db и ruby ​​1.9.2 (у меня есть эта версия).
db:pull заканчивается на «Невозможно получить информацию о таблицах из»
db:push заканчивается на «!!! Пойманный сервер КОД HTTP-исключения: 404"

Существует обходной путь для этой проблемы. Переключитесь на ruby ​​1.8.7 (я использую для этого rvm) на мгновение, просто чтобы выполнить операции db на героку, а после завершения переключитесь обратно на ruby.

person sufleR    schedule 26.09.2012
comment
Забавно, что ты так выразился. Я использую 1.9.3, и мой первоначальный обходной путь состоял в том, чтобы использовать 1.9.2! У меня есть приведенные выше команды, сохраненные в текстовом файле, поэтому я могу быстро выполнить развертывание без особого устранения неполадок, если db:push Heroku снова отключится. - person Tyler; 27.09.2012

Я делаю тот же процесс (попросите Heroku преобразовать мою базу данных sqlite в Postgres), и вчера у меня тоже возникла эта проблема. Кажется, теперь это работает, поэтому я считаю, что это была проблема с Heroku.

person Chris    schedule 26.09.2012