Django: Die DatabaseError-Spalte existiert nicht

8

Ich habe ein Problem mit Django 1.2.4.

Hier ist ein Modell:

%Vor%

Direkt nach dem Löschen der Datenbank verwende ich die Shell:

%Vor%

Was mache ich hier falsch?

Update : Wenn ich das ForeignKey auskommentiere, verschwindet das Problem.

Update 2 : Seltsamerweise funktioniert dieser Komponententest ganz gut:

%Vor%

Warum funktioniert es hier, aber nicht in der Shell?

Update 3 : Der Grund, warum es im Komponententest funktioniert, aber nicht in der Shell, kann etwas mit den verschiedenen verwendeten Datenbanken zu tun haben:

settings.py :

%Vor%

Update 4 : Bestätigt, dass alles in Ordnung ist, wenn ich SQLite3 als db benutze.

    
Nick Heiner 14.01.2011, 01:46
quelle

5 Antworten

9

Versuchen Sie, die Datenbank vollständig zu löschen / zu löschen, bevor Sie syncdb ausführen.

Ich erinnere mich, dass ich das vor einiger Zeit tun musste, als ich Änderungen an fremden Schlüsselfeldern vorgenommen hatte.

    
amcashcow 16.01.2011, 04:12
quelle
3

Ich habe dieses Problem behoben, indem ich die spezifische Tabelle auf das fragliche Modell gesetzt habe. Dann verwendet:

%Vor%

Wenn Sie PostgreSQL verwenden, dann empfehle ich, phppgadmin als Web-Interface zu verwenden, das PHPmyadmin ähnelt und für mySQL verwendet wird.

Alternativ zur Benutzeroberfläche können Sie einfach die Befehlszeile

verwenden %Vor%

Wenn Sie in \ d sind, drücken Sie die Taste q.

    
Alex Stewart 14.12.2012 04:40
quelle
3

Wenn Sie Django 1.8 verwenden, sollten Sie die Spalte erstellen. Um sicherzustellen, dass Sie die Spalte korrekt erstellen, suchen Sie die Migrationsdatei, in der Sie das Feld erstellt haben, und führen Sie Folgendes aus:

%Vor%

Dadurch werden die sql-Befehle zum Erstellen der Spalte ausgegeben. Stellen Sie sicher, dass Sie die Befehle einschließen, die Beziehungen behandeln, und führen Sie die Befehle in Ihrer Datenbankkonsole aus. Sie müssen etwas Extremes tun, wie den Tisch oder die Datenbank fallen zu lassen.

    
Ernest Jumbe 09.11.2015 15:44
quelle
3

Bitte lesen Sie dies, bevor Sie Ihre gesamte Datenbank löschen

Ich hatte dasselbe Problem. Bitte lesen Sie die Ausnahme vollständig durch. Ich hatte eine ModelForm-Klasse, die aus meiner Tabelle las, um ein Formular zu erstellen, und eine Ausnahme war dort. Ich habe die Makemigrationen auskommentiert und dann komplett ausgeführt. Danach habe ich die ModelForm-Klasse kommentiert und alles funktioniert perfekt.

Hoffe, das hilft.

    
Ali 18.07.2016 19:40
quelle
0

Ich hatte dasselbe Problem und bemerkte, dass in der Backend-Datenbank das Feld, in dem Fremdschlüssel gespeichert waren, nicht existierte. Das Problem ist verschwunden, nachdem ich das Feld erstellt habe (was ich für merkwürdig halte). Django scheint kein Feld zu erstellen, das als Fremdschlüssel gekennzeichnet ist. Irgendein Grund warum?

    
melsk 01.07.2011 18:07
quelle

Tags und Links