2013-05-24 1 views
1

Я создаю приложение под названием «компетенции». Я вносил изменения в модели, переносил приложение локально, и все работало. Это моя восьмая миграция в приложении.Ошибка NoMigrations в Django

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

NoMigrations: Application '<module 'django.contrib.admin' from '/app/.heroku/python/lib/python2.7/site-packages/django/contrib/admin/__init__.py'>' has no migrations. 

Я искал эту ошибку, и я ничего значимого не найден. Может ли кто-нибудь предположить, что я делаю неправильно, или как решить эту проблему?

+0

вы использовали южные миграции любых модели Джанго? как 'django.contrib.auth'? – karthikr

+0

Единственное приложение, которое я перенесло, было admin. – japhyr

+0

Я думаю, это проблема. Вы используете virtualenv? Не рекомендуется применять миграции для любых приложений django. – karthikr

ответ

0

django.contrib.admin не должно иметь миграций. Пакеты Contrib не управляются на юг.

Если вы EVER запустили python manage.py schemamigration django.contrib.auth --XXX на своем локальном компьютере, он создаст папку миграций в установлении локальной копии django venv. Однако это никогда не будет передано героку.

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

  • новый DB
  • новый virtualenv
  • новая папка ж/новый клон репо

попытаться запустить python manage.py migrate, если вы получаете то же самое ошибка его b/c вы нарушили свой virtualenv с юга.

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

  • ролла ваши моделей вернуться к последней рабочей конфигурации
  • удалить папку миграции Каждого приложения в
  • truncate south_migrations стол
  • запустите python manage.py schemamigration --initial X для каждого вашего приложения.
  • толчок и migrate --fake
  • переделать вашу модель изменения
  • создать миграции для модели изменения
  • толчка и мигрируют регулярно
+0

. Я попытался выполнить миграцию администратора в один момент, и я вижу папку миграции в django/contrib/admin. Я думаю, что я, возможно, попытался перенести администратора в сеанс heroku в какой-то момент. Я решил уничтожить приложение heroku и восстановить его. Разве это разумный план, учитывая, что это тест? – japhyr

+2

Вы можете сохранить миграцию ваших пакетов contrib/dependency просто отлично, используйте 'SOUTH_MIGRATION_MODULES = {'admin', ' .migrations.admin'}' –

+0

@Hedde http: //south.readthedocs.org/ru/latest/settings.html # south-migration-modules Я об этом не знал. В общем, я по-прежнему считаю, что не очень хорошая идея использовать эту функцию в моделях django contrib, так как это может сломать будущие исправления безопасности и т. Д. –

0

Я недавно столкнулся с этой ошибкой после сброса живой базы данных в поле Dev для тестирование миграций данных.

Одна из зависимостей выбрасывает эту ошибку (в частности, taggit). Я думаю, что у меня есть другая версия taggit в окне разработчика, у которой нет миграций, но база данных, которую я сбросил, имела две миграции для taggit в south_migrationhistory.

Я удалил записи в south_migrationhistory для проблемного приложения, ошибочно заявив NoMigrations, и это решило мою проблему. Все бежит снова.

0

Помимо многих ответов, размещенных выше, south.exceptions.NoMigrations часто является исключением после 2014 года (Django 1.7) из-за измененного каталога migrations. Каталог по умолчанию для Django, встроенного в миграции.

Для перехода на юг в каталог south_migrations. South>=1.0 может распознавать это и автоматически обнаруживать миграции. Подробнее here on Django docs

В этом случае обновление South:

pip install -U South 

Или вы можете также указать каталог миграции на файл настроек (для каждого приложения установлен).

0

Я нашел случай с необычным краем, связанный с Kombu.

Я сохранении прежних версий Django 1.5 проекта на Ubuntu 14.04, и я уже имел этот параметр, чтобы получить Kombu играть красиво:

SOUTH_MIGRATION_MODULES = { 
    'kombu_transport_django': 'kombu.transport.django.south_migrations', 
} 

Однако, после того, как я повышен до Ubuntu 16, были некоторые незначительные tweaks в Python stdlib, который снова сломал Комбу. Обновление комбу был единственным непосредственным решением, но это дало мне другую ошибку Kombu подобно тому, что ОП найдено:

NoMigrations: Application '<module 'kombu.transport.django' from '/myproject/.env/local/lib/python2.7/site-packages/kombu/transport/django/__init__.pyc'>' has no migrations. 

Это сообщение об ошибке является почти ничего не стоит, но я в конце концов понял, что проблема была моя установка SOUTH_MIGRATION_MODULES. Оказывается, старый kombu.transport.django.south_migrations был удален, а Юг пытается импортировать этот недостающий каталог миграции, что и вызывало ошибку. Исправлено удаление этой строки.

0

Попробуйте pip install --upgrade django

Ошибка NoMigrations часто появляется, если вы понижаете свою версию Django.

В моем случае я установил пакет, который автоматически удалил мою текущую версию Django и установил ее пониженную версию.

Установка обновленной версии была быстрой фиксацией.

Кроме того, вы можете проверить в вашем INSTALLED_APPS если вы включили все ваши приложения, включая 'django.contrib.auth' и 'django.contrib.admin'

 Смежные вопросы

  • Нет связанных вопросов^_^