web-dev-qa-db-de.com

Django: Tisch existiert nicht

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? 

23
Vivek Ananthan
  1. tabellen ablegen (was Sie bereits getan haben), 
  2. kommentieren Sie das Modell in model.py aus, 
  3. und ..

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
  1. kommentieren Sie Ihr Modell in models.py ein
  2. gehe zu Schritt 3.ABERdiesmal ohne --fake
67
doniyor

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)

Ich habe diese Antwort von Reddit bekommen

7
Keith Yong

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:

  1. löschen Sie alle Migrationsdateien im Migrationsordner (mit Ausnahme der Datei init .py), und führen Sie die Migration anschließend aus
  2. über 2 Antworten
  3. diese

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. 

1
coda

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.

0
echohabz