Pourquoi ne pas mon sud, les migrations de travail?

Tout d'abord, j'ai créer ma base de données.

create database mydb;

- Je ajouter "sud" pour les Applications installées. Ensuite, je vais à ce tutoriel: http://south.aeracode.org/docs/tutorial/part1.html

Le tutoriel me dit de faire ceci:

$ py manage.py  schemamigration wall --initial
>>> Created 0001_initial.py. You can now apply this migration with: ./manage.py migrate wall

Grand, maintenant je migrer.

$ py manage.py migrate wall

Mais il me donne cette erreur...

django.db.utils.DatabaseError: (1146, "Table 'fable.south_migrationhistory' doesn't exist")

Donc j'utilise Google (qui ne fonctionne jamais. d'où mon 870 questions posées sur Stackoverflow), et j'obtiens cette page: http://groups.google.com/group/south-users/browse_thread/thread/d4c83f821dd2ca1c

Bon, j'suivre que les instructions

>> Drop database mydb;
>> Create database mydb;
$ rm -rf ./wall/migrations
$ py manage.py syncdb

Mais quand je lance syncdb, Django crée un groupe de tables. Oui, il crée le south_migrationhistory tableau, mais il crée aussi mon application tables.

Synced:
 > django.contrib.admin
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.sites
 > django.contrib.messages
 > south
 > fable.notification
 > pagination
 > timezones
 > fable.wall
 > mediasync
 > staticfiles
 > debug_toolbar

Not synced (use migrations):
 - 
(use ./manage.py migrate to migrate these)

Cool....maintenant, il me dit de migrer ces. Donc, je fais ceci:

$ py manage.py  migrate wall
The app 'wall' does not appear to use migrations.

Bon, très bien. Je vais ajouter un mur à la formation initiale des migrations.

$ py manage.py schemamigration wall --initial

Puis-je migrer:

$ py manage.py migrate wall

Vous savez quoi? Il me donne cette BS:

_mysql_exceptions.OperationalError: (1050, "Table 'wall_content' already exists")

Désolé, c'est vraiment pisser me off. Quelqu'un peut-il aider ? merci.

Comment puis-je obtenir du Sud de travailler et de se synchroniser correctement avec tout? La seule chose que je peux penser à est de supprimer mon application de INSTALLED_APPS, puis exécutez syncdb, puis ajouter sur le dos.

C'est TELLEMENT RIDICULE.

  • Ken réponse est fondamentalement correct autant que des solutions d'y aller, mais juste pour signaler ce qui s'est passé afin que vous pouvez apprendre de lui: la suppression de votre migrations dir était le problème la deuxième fois. À partir d'un nettoyage de base de données: 1. créez votre migrations pour n'importe quelle des apps les utiliser, 2. exécuter syncdb, 3. exécutez le migrer de commande. Qui va utiliser syncdb pour créer unmigrated tables, et sud pour créer migré ceux. Un dernier point: lorsque le syncdb sortie dit "Non synchronisée (utiliser les migrations):" assurez-vous de lire ce qui vient après. Il n'y avait rien à migrer dans votre sortie parce que vous n'aviez pas de migrations.
  • +1 pour la fourniture d'une analyse approfondie de votre problème
  • Si vous traitez avec des classes dans plusieurs fichiers, vérifiez si vous avez app_label dans tous!
InformationsquelleAutor TIMEX | 2011-01-29