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?
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
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)
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:
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
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.