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.
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.
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.
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)
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 .
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.
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']
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).
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