Подтвердить что ты не робот

Ошибка миграции юга: исключение NoMigrations для django.contrib.auth

Я использую Юг в моем проекте некоторое время, но недавно я сделал огромное количество разработки и изменил машину разработки, и я думаю, что что-то испортило в этом процессе. Проект работает отлично, но я не могу применять миграции. Всякий раз, когда я пытаюсь применить миграцию, я получаю следующую трассировку:

danpalmer:pest Dan$ python manage.py migrate frontend
Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 362, in execute_manager
    utility.execute()
  File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 303, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 195, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 222, in execute
    output = self.handle(*args, **options)
  File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/management/commands/migrate.py", line 102, in handle
    delete_ghosts = delete_ghosts,
  File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/__init__.py", line 182, in migrate_app
    applied = check_migration_histories(applied, delete_ghosts)
  File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/__init__.py", line 85, in check_migration_histories
    m = h.get_migration()
  File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/models.py", line 34, in get_migration
    return self.get_migrations().migration(self.migration)
  File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/models.py", line 31, in get_migrations
    return Migrations(self.app_name)
  File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/base.py", line 60, in __call__
    self.instances[app_label] = super(MigrationsMetaclass, self).__call__(app_label_to_app_module(app_label), **kwds)
  File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/base.py", line 88, in __init__
    self.set_application(application, force_creation, verbose_creation)
  File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/base.py", line 159, in set_application
    raise exceptions.NoMigrations(application)
south.exceptions.NoMigrations: Application '<module 'django.contrib.auth' from '/Library/Python/2.6/site-packages/django/contrib/auth/__init__.pyc'>' has no migrations.

Я не настолько опытен с Югом, и раньше я не встречал эту ошибку. Единственное полезное упоминание, что я могу найти в Интернете об этой ошибке, - это до 0,7, я думаю, и я нахожусь на South 0.7. Я побежал "easy_install -U South", чтобы убедиться.

4b9b3361

Ответ 1

Я решил проблему.

Очевидно, что вы не можете использовать Юг для переноса приложений, которые являются частью Django, например, "auth", поэтому я не знал, почему он пытался.

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

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

Ответ 2

Оставив это здесь для будущих гуглеров

Недавно я столкнулся с этими исключениями с одним из моих собственных приложений, а не одним из них.

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

 app/migrations/__init__.py

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

Ответ 3

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

./manage.py dbshell

mysql> SELECT * FROM south_migrationhistory WHERE app_name = 'social_auth';

104 | social_auth | 0001_initial...                                                                   
105 | social_auth | 0002_auto__add_unique_nonce...


mysql> DELETE FROM south_migrationhistory WHERE app_name = 'social_auth';
Query OK, 2 rows affected (0.00 sec)

Ответ 4

У меня также была та же проблема, и в конце я исправил это, удалив все строки из таблицы south_migrationhistory и выполнив следующую команду из терминала.

python manage.py reset south

Этот ответ объясняет, как reset история миграции юга.

Edit:

Из команды Django 1.5 on reset не будет работать. Вместо этого вы должны использовать flush.

python manage.py flush

Чтобы узнать больше о том, что делает флеш, прочитайте этот fooobar.com/questions/213738/....

Ответ 5

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

Ответ 6

Вы можете выполнять миграции на встроенных модулях, и это определенно имеет смысл для переноса данных, например, усечение всех имен пользователей, удаление недействительных сообщений электронной почты и т.д.

В случае пользователя из django.contrib.auth.models просто используйте: orm ['auth.User']

Ответ 7

Я получил ту же ошибку, но не для модуля django, а для модуля, который был частью моего virtualenv. Я не понял, как юг мог выполнить миграцию для этого модуля, поскольку на нем действительно не было никаких миграций. Затем я вспомнил, что я скопировал базу данных из тестового env, который должен был быть таким же. Но оказалось, что у другого env была немного другая версия модуля, у которой была миграция. Я закончил тем, что удалил оскорбительный ряд из южной миграционной истории (так как в любом случае это был тест env).

Ответ 8

У меня была аналогичная проблема с django.contrib.admin, не позволяя мне запускать мои миграции. Я решил это, отключив django.contrib.admin в settings.INSTALLED_APPS