web-dev-qa-db-fra.com

Django: la table n'existe pas

J'ai laissé tomber une table liée à une application. et encore essayé la commande syncdb

python manage.py syncdb

Il montre une erreur comme 

Django.db.utils.ProgrammingError: (1146, "Table 'someapp.feed' doesn't exist")

models.py 

class feed(models.Model):
    user = models.ForeignKey(User,null=True,blank=True)
    feed_text = models.CharField(max_length=2000)
    date = models.CharField(max_length=30)
    upvote = models.IntegerField(default=0)
    downvote = models.IntegerField(default=0)

    def __str__(self):
        return feed.content

Que puis-je faire pour obtenir les tables pour cette application? 

23
Vivek Ananthan
  1. déposer des tables (vous l'avez déjà fait), 
  2. commentez le modèle dans model.py, 
  3. et ..

si version Django> = 1.7: 

python manage.py makemigrations
python manage.py migrate --fake

else

python manage.py schemamigration someapp --auto
python manage.py migrate someapp --fake
  1. commentez votre modèle dans models.py
  2. allez à l'étape 3.MAIScette fois sans --fake
67
doniyor

Pour ceux qui ont encore des problèmes (comme moi), essayez ceci:

Mettez en commentaire toutes les URL dans le urls.py de l'application principale.

Ensuite, lancez les migrations:

$ ./manage.py makemigrations
$ ./manage.py migrate

Le problème a été résolu en supprimant les ()

    solved_time = models.DateTimeField('solved time', default=timezone.now())

à

    solved_time = models.DateTimeField('solved time', default=timezone.now)

J'ai eu cette réponse de reddit

7
Keith Yong

aucune des solutions ci-dessus n’a fonctionné pour moi, j’ai finalement résolu mon problème. 

Sudo systemctl stop mysql.service

Sudo apt-get purge mysql-server

Sudo apt-get install mysql-server

Sudo systemctl stop mysql.service

Dans mon cas, le code que j'ai extrait avait géré = False et je voulais que les tables soient maintenues par Django. 

Mais quand j'ai créé makemigrations, les tables personnalisées n'étaient pas détectées ou je recevais l'erreur que le app_name.Table_name n'existe pas

J'ai essayé ce qui suit:

  1. supprime tous les fichiers de migration du dossier de migration (à l'exception du fichier init .py), puis makemigrations, puis finalement migrer
  2. ci-dessus 2 réponses
  3. ce

PS: cette solution n'est envisageable que si une sauvegarde est présente, que les données ne sont pas importantes ou que vous venez de commencer à créer les tables, car purger mysql entraînerait une perte de données 

1
coda

J'ai eu ce problème où je jouais avec la même structure de base de données en production par rapport au développement. Bien que supprimer et recréer des tables résolve probablement le problème, il vaut la peine de vérifier votre base de données elle-même et de voir si le modèle est réellement correct. Pour ma part, j'ai créé la base de développement de façon incorrecte avec les noms de table, tous en minuscule, tandis qu'en production, la première lettre des tables était en majuscule. J'ai utilisé la commande python manage.py inspectdb sur la base de données de production et je l'ai comparée au modèle. Je me suis rendu compte que, dans le modèle, il essayait d'insérer des données dans la table 'test' au lieu de 'Test' par exemple. J'espère que cela aidera certains d'entre vous à l'avenir.

0
echohabz