Comment réparer une Erreur de Base de données et le fantôme de la migration d'erreur dans Django?
Je reçois un DatabaseError dire non à la colonne nommée playlist existe, et je suis à essayer de comprendre comment le corriger. Je suis en utilisant du Sud. J'ai supprimé les anciens fichiers dans le mon migrations dossier et a couru:
python manage.py schemamigration app_name --initial
python manage.py migrate reserve
J'obtiens cette erreur quand je fais ça:
south.exceptions.GhostMigrations:
! These migrations are in the database but not on disk:
<reserve: 0002_initial>
! I'm not trusting myself; either fix this yourself by fiddling
! with the south_migrationhistory table, or pass --delete-ghost-migrations
! to South to have it delete ALL of these records (this may not be good).
Je ne suis pas sûr de la façon de se débarrasser de cette erreur, étant donné que dans mon migrations dossier je n'ai qu'init.py(c) et 0001_initial.py(c); je n'ai pas 0002 fichier de migration plus.
Quand j'essaie runserver et cliquez sur "ajouter une liste de lecture" dans l'admin, c'est quand j'ai le DatabaseError. Si cela peut aider, mon models.py est:
class UserProfile(models.Model):
user = models.OneToOneField(User)
def __unicode__(self):
return self.user
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
class Playlist(models.Model):
playlist = models.CharField('Playlist', max_length = 2000, null=True, blank=True)
def __unicode__(self):
return self.playlist
class Video(models.Model):
video_url = models.URLField('Link to video', max_length = 200, null=True, blank=True)
def __unicode__(self):
return self.video_url
class UserPlaylist(models.Model):
profile = models.ForeignKey(User)
playlist = models.ForeignKey(Playlist)
def __unicode__(self):
return self.playlist
class Videoplaylist(models.Model):
video = models.ForeignKey(Video)
playlist = models.ForeignKey(UserPlaylist)
def __unicode__(self):
return self.playlist
Des conseils sur la façon de résoudre ce problème?
OriginalL'auteur sharataka | 2012-10-26
Vous devez vous connecter pour publier un commentaire.
Sud stocke des informations sur la migration de la base de données trop, dans un tableau intitulé "migrations". [ Je pense que c'est le nom de la table; l'écriture de ce mémoire ].
Vous avez besoin de nettoyer la table.
Note
OriginalL'auteur Ngure Nyaga
Il suffit d'exécuter
Cela devrait supprimer non existantes sur la migration à partir de la table de base de données
south_migrationhistory
.OriginalL'auteur Aidas Bendoraitis
Tout d'abord, vous devriez travailler sur ce qui est arrivé à obtenir le db et le système de fichier de la synchronisation.
Ensuite, le cas échéant, vous pouvez le faire
ou
comme Aidas dit, selon ce qui semble le plus adapté. Le
ignore
option est sans doute moins risqué, même si quelque chose a déjà été égarés pour vous d'obtenir à cet état.OriginalL'auteur Terry Brown
Généralement cette erreur se produit parce que, vous avez créé un fichier de migration et a fait de la migration alors que la migration fichier a été supprimé à partir de votre système de fichiers(disque)
Si vous avez des modifications à votre base de données causée par une migration qui n'existe plus.
Selon que vous avez supprimé le fichier de migration de fichiers par choix, ce que vous pouvez faire; c'est d'aller de l'avant et de supprimer également les modifications de la base de données.
Démarrer le python shell;
$
python manage.py shell
Qui ont supprimé l'0002 migration à partir de la db.
Vous pouvez maintenant aller de l'avant et de créer ou de recréer de la migration, vous voulez.
Goodluck,
Komu.
OriginalL'auteur Komu
Il suffit d'exécuter la commande où manage.py le fichier est présent dans votre répertoire
OriginalL'auteur samresh kr Jha