Как заставить Юг работать в Heroku для приложения Django - PullRequest
4 голосов
/ 15 марта 2012

Я работаю над Python / Django и пытаюсь использовать Юг для управления моей базой данных.В местной среде работает отлично.Проблема возникает, когда я развернусь в Heroku.Проблема в том, что когда я создаю миграцию с

$heroku run manage.py schemamigration mydjangoapp

Похоже, она работает (оболочка подтвердила это), однако затем я пытаюсь использовать миграции, и она не работает.Когда я делаю:

$heroku run python manage.py migrate mydjangoapp

я получаю это;

The app 'createtuto' does not appear to use migrations

Я проверил проблему, и похоже, что heroku не позволяет South создавать каталог миграции в / myDjangoapp /Миграции.

Есть ли что-нибудь, что я могу сделать, чтобы это работало?

Я пытался использовать convert_to_south, но я получил те же результаты: вначале это выглядело, как будто это работало, но это былонет, миграция не создана.

Ответы [ 2 ]

10 голосов
/ 15 марта 2012

Когда вы запускаете 'heroku run', он подключается к изолированному экземпляру вашей развернутой среды. Это создает миграцию, однако эта миграция не содержится в вашем слаге. Каждый раз, когда вы делаете 'git push heroku master', он устанавливает ваши зависимости и упаковывает ваше приложение в слаг. Это более или менее tarball вашего приложения, который позволяет Heroku легко развертывать его в новых динамо по мере увеличения масштаба.

Чтобы запустить миграцию на Heroku, вы должны создать миграцию локально, зарегистрировать ее, а затем запустить миграцию на heroku. Нечто похожее на:

manage.py schemamigration mydjangoapp
git add mydjangoapp/migrations/*
git commit -m 'adding new migrations'
git push heroku master
heroku run python manage.py migrate mydjangoapp
5 голосов
/ 11 ноября 2012

Я успешно следую указаниям Майка Болла: http://www.mikeball.us/blog/using-south-on-heroku/

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

heroku run bin/python django_project/manage.py convert_to_south django_app
...