Ich habe eine Tabelle zu einer App gelöscht. und versuchte erneut den Befehl syncdb
python manage.py syncdb
Es zeigt Fehler wie
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
Was kann ich tun, um die Tabellen für diese App zu erhalten?
wenn Django-Version> = 1.7:
python manage.py makemigrations
python manage.py migrate --fake
else
python manage.py schemamigration someapp --auto
python manage.py migrate someapp --fake
Für diejenigen, die immer noch Probleme haben (wie ich), probieren Sie Folgendes aus:
Kommentieren Sie alle URLs in urls.py
der Hauptanwendung aus.
Führen Sie dann die Migrationen aus:
$ ./manage.py makemigrations
$ ./manage.py migrate
Das Problem wurde durch Entfernen der ()
's behoben
solved_time = models.DateTimeField('solved time', default=timezone.now())
zu
solved_time = models.DateTimeField('solved time', default=timezone.now)
keine der oben genannten Lösungen hat für mich funktioniert, ich habe sie schließlich gelöst
Sudo systemctl stop mysql.service
Sudo apt-get purge mysql-server
Sudo apt-get install mysql-server
Sudo systemctl stop mysql.service
In meinem Fall hatte der von mir gezogene Code verwaltet = False und ich wollte, dass die Tabellen von Django verwaltet werden.
Bei Makemigrationen wurden die benutzerdefinierten Tabellen jedoch nicht erkannt oder es wurde der Fehler angezeigt, dass app_name.Table_name nicht vorhanden ist
Ich habe folgendes versucht:
PS: Diese Lösung ist nur möglich, wenn Backups vorhanden sind oder Daten nicht wichtig sind oder Sie gerade erst mit dem Erstellen der Tabellen beginnen, da das Löschen von mysql zu Datenverlust führt.
Ich hatte dieses Problem, bei dem ich mit der gleichen Datenbankstruktur in Produktion vs. Entwicklung spielte. Durch das Löschen und Wiederherstellen von Tabellen wird das Problem wahrscheinlich gelöst. Es lohnt sich jedoch, die Datenbank selbst zu überprüfen und festzustellen, ob das Modell tatsächlich korrekt ist. Für mich selbst habe ich die Entwicklungsdatenbank falsch mit den Tabellennamen in Kleinbuchstaben erstellt, während in der Produktion der erste Buchstabe der Tabellen groß geschrieben wurde. Ich habe den Befehl python manage.py inspectdb für die Produktionsdatenbank verwendet, mit dem Modell verglichen und festgestellt, dass im Modell versucht wurde, Daten in die Tabelle 'test' anstelle von 'test' einzufügen. Hoffe, das hilft einigen von Ihnen in der Zukunft.