Erreur de migration vers le sud: exception de NoMigrations pour django.contrib.auth

j'ai utilisé South sur mon projet pendant un certain temps, mais j'ai récemment fait une énorme quantité de développement et changé machine de développement et je pense que quelque chose foiré dans le processus. Le projet fonctionne bien, mais je ne peux pas appliquer les migrations. Chaque fois que j'essaie d'appliquer une migration, j'obtiens le traceback suivant:

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.

Je n'ai pas l'expérience du Sud et je n'ai jamais rencontré cette erreur. La seule mention utile que je peux trouver en ligne sur cette erreur est pour avant de 0,7 je pense et je suis sur le Sud de 0.7. J'ai fait easy_install-U South Pour être sûr.

25
demandé sur ROMANIA_engineer 2010-05-17 02:15:43

8 réponses

Laissant de ce ici pour de futures googlers

j'ai récemment rencontré ces exceptions avec l'une de mes propres applications aujourd'hui, pas un contrib.

après quelques égratignures, j'ai remarqué que le fichier ...

 app/migrations/__init__.py

... avait été supprimé, ce qui signifie que python ne peut pas importer le dir comme un module, etc.

43
répondu sjh 2010-07-07 09:43:50

j'ai résolu le problème.

évidemment, vous ne pouvez pas utiliser le Sud pour faire les migrations pour les applications qui font partie de Django, comme 'auth' donc je ne savais pas pourquoi il essayait.

j'ai réalisé que pendant un certain temps j'avais une autre application dans mon projet appelé auth. J'ai dû essayer de le migrer à un moment donné avant de le renommer et de tout gâcher.

j'ai enlevé l'histoire de la migration des entrées de la base de données pour cette application et que tout allait bien.

26
répondu danpalmer 2010-05-19 07:54:59

j'ai juste couru dans ce après swithcing branches et applications versions, et a décidé de supprimer l'application qui n'a maintenant pas de migrations de la table d'histoire de migration du Sud

./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)
11
répondu Tom Gruner 2014-02-07 20:13:00

j'ai aussi eu le même problème, et à la fin j'ai corrigé ceci en supprimant toutes les lignes de la table south_migrationhistory et j'ai lancé la commande suivante à partir du terminal.

python manage.py reset south

Ce réponse expliquer sur la façon de réinitialiser le sud de l'histoire de la migration.

Edit:

à partir de Django 1.5 reset le commandement ne fonctionnera pas. Au lieu de cela, vous devez utiliser flush .

python manage.py flush

Pour comprendre plus au sujet de ce que la chasse d'eau ne lire cette stackoverflow réponse .

5
répondu Jinesh 2017-05-23 12:16:24

j'ai également eu le même problème, mais cela est arrivé à l'application racine. J'ai découvert que cela était dû à un vide models.py dans ma racine de projet de développement plus tôt. Je soupçonne que cette question peut également se poser pour les demandes de projets.

1
répondu Dan Ward 2012-09-25 19:00:30

vous pouvez faire des migrations sur des modules intégrés, et cela a certainement du sens pour les migrations de données, par exemple, tronquer tous les noms d'utilisateurs, supprimer les e-mails invalides, et cetera.

dans le cas d'un utilisateur de django.contrib.auth.modèles, utilisez simplement: orm ['auth.L'utilisateur']

1
répondu mrooney 2013-01-04 20:04:30

j'ai eu la même erreur, mais pas pour un module django, mais pour un module qui faisait partie de mon virtualenv. Je n'ai pas compris comment south aurait pu faire une migration pour ce module, puisqu'il n'avait vraiment pas de migrations. Puis je me suis souvenu que j'avais copié la base de données à partir d'un test env qui devait être le même. Mais il s'est avéré que l'autre env avait une version légèrement différente du module qui fait ont une migration. J'ai fini par supprimer la ligne offensante de l'histoire de la migration du Sud (puisque c'était un env test de toute façon).

0
répondu Ciske Boekelo 2014-01-24 17:16:03

j'ai eu un problème similaire avec django.contrib.l'administration ne me laisse pas gérer mes migrations. Je l'ai résolu en désactivant django.contrib.administrateur dans les paramètres.INSTALLED_APPS

0
répondu mpaf 2014-02-12 12:17:02