2010-09-02 16 views
31

Ich habe mehrere Themen mit diesem Titel gefunden, aber keine ihrer Lösungen funktionierte für mich. Ich habe zwei Django-Sites auf meinem Server, beide über Apache mit verschiedenen virtuellen Hosts auf zwei Ports, die von meinem Nginx-Frontend gespeist werden (für statische Dateien). Eine Seite verwendet MySql und läuft gut. Der andere benutzt Sqlite3 und bekommt den Fehler im Titel.Django: keine solche Tabelle: django_session

Ich habe eine Kopie von sqlite.exe heruntergeladen und schaute auf die Datei mysite.sqlite3 (SQLite-Datenbank in diesem Verzeichnis) und es gibt in der Tat eine django_session-Tabelle mit gültigen Daten darin. Ich habe die sqlite.exe in meinem System32 sowie den Standort-Pakete-Ordner in meinem Python-Pfad.

Hier ist ein Teil meiner settings.py Datei:

MANAGERS = ADMINS 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 
     'NAME': 'mysite.sqlite3',   # Or path to database file if using sqlite3. 
     'USER': '',      # Not used with sqlite3. 
     'PASSWORD': '',     # Not used with sqlite3. 
     'HOST': '',      # Set to empty string for localhost. Not used with sqlite3. 
     'PORT': '',      # Set to empty string for default. Not used with sqlite3. 
    } 
} 

ich die Python manage.py syncdb ohne Fehler verwendet haben und nur ein "No-Befestigungen" Kommentar.

Hat jemand irgendwelche Ideen, was sonst noch hier vor sich geht? Ich überlege gerade, alles auf meinen alten Freund MySql zu übertragen und Sqlite einfach zu ignorieren, da es mir wirklich immer Ärger einbringt. Ich benutzte es nur, um es trotzdem zu wissen. Ich habe keinen überwältigenden Grund, warum ich es benutzen sollte. Aber wieder, nur für meine Erbauung weiß jemand, was dieses Problem ist? Ich gebe nicht gerne auf.

Antwort

46

Es kann sein, dass der Server ein anderes Arbeitsverzeichnis verwendet als der manage.py Befehl. Da Sie einen relativen Pfad zur SQLite-Datenbank angeben, wird er im Arbeitsverzeichnis erstellt. Versuchen Sie es mit einem absoluten Pfad, z.B .:

'NAME': '/tmp/mysite.sqlite3', 

Denken Sie daran, dass Sie entweder ./manage.py syncdb erneut ausführen oder Ihre aktuelle Datenbank mit den vorhandenen Tabellen zu /tmp kopieren.

Wenn es die Fehlermeldung behoben wird, können Sie für einen besseren Ort aussehen als /tmp :-)

+0

eigentlich bin ich auf Windows XP x64 laufen;) Es ist mein Heimcomputer, der der Entwicklungsserver ist. Seltsamerweise funktionierte das, wenn es vorher nicht funktionierte. Ich änderte den Pfad zu meinen Python-Site-Paketen und erstellte eine neue Datenbankdatei. Ich überschrieb diese Datei mit der bereits vorhandenen und übertrug sie dann wieder in den mysite-Ordner und änderte die settings.py in: 'I : /xampp/htdocs/mysite/mysite.sqlite3 'im NAME-Slot. Es hat aus irgendeinem seltsamen Grund funktioniert –

+0

Ich sage das, weil ich vorher den NAMEN genau so geändert habe und es nicht funktioniert hat. Aber ich denke, es zu zwingen, eine neue Datenbankdatei zu erstellen, selbst wenn ich sie einfach mit dem überschrieb, was ich bereits hatte, wachte es irgendwie auf. –

+0

genau das, was ich gesucht habe, danke! –

14

Im Fall hilft es jemand anderes: das Problem für mich war, dass ich nicht die django.contrib.sessions App uncommented hatte in meine INSTALLED_APPS. Das Kommentieren und das erneute Ausführen einer syncdb haben den Trick gemacht.

+0

Dies löste meine Instanz dieses Fehlers. – Chris

+0

Mine auch. Dieser Fehler bezieht sich wahrscheinlich nicht auf die Verwendung von sqlite als db-Treiber. – sapht

8

Wenn ich "manage.py runserver" ausführen. Wenn ich laufe wenn ich meinen aktuellen Pfad nicht im Projektverzeichnis habe (zB python /somefolder/somefolder2/currentprj/manage.py runserver) bekomme ich das Problem wie du. lösche per CD zum Projektverzeichnis vor dem Ausführen des Befehls.

+0

Danke. Ich bin mit djangocms bei #pythonanywhere und auf dem Server wsgi habe ich 'import os import sys path = '/ home/user/project' wenn Pfad nicht in sys.path: sys.path.append (Pfad) os.chdir (pfad) von project.wsgi import application' Hoffe es hilft some1 else.1 – JeanPaulDepraz

4

Eine andere mögliche Ursache kann aus mit:

./manage.py testserver 

Und dann das Admin-Interface zu besuchen. Dies funktioniert nicht, da testserver eine komplett separate Datenbank im Speicher erstellt. Wenn Sie die Admin-Oberfläche besuchen möchten, müssen Sie runserver verwenden.

9

In meinem Fall war das Problem, dass ich vergessen habe, manage.py syncdb zu laufen, nachdem ich einige Änderungen vorgenommen habe. Als ich das tat, war das Problem gelöst.

2

hatte das gleiche Problem, meine Lösung bestand darin, einfach "django.contrib.comments" zu INSTALLED_APPS hinzuzufügen und ./manage.py syncdb erneut auszuführen.

1

Erstellen Sie ein Schema und fügen Sie seinen Namen unter NAME in 'Datenbanken' run verwalten.py syncdb

1

Möge es nicht den Pfad von db bekommen. Füge das einfach zu deiner settings.py hinzu:

import os 
PROJECT_PATH = os.path.dirname(os.path.abspath(__file__)) 

#modify your db NAME as below: 
'NAME': os.path.join(PROJECT_PATH,'mysite.sqlite3'), 
+0

Ich habe dies ein wenig optimiert, um es einfacher zu lesen - können Sie überprüfen und stellen Sie sicher, dass ich nicht habe alles verändert, was die Bedeutung aufhebt? – andrewsi

0

Hatte dieses Problem auch. Neustarten von Postgres und Apache2 hat es für mich getan. Ich frage mich, ob es eine Art SQLite-Prozess gibt, der nicht entfernt wurde, bis Sie mit den Dateien oder etwas herumgespielt haben.

1

Ich hatte einige Änderungen in Model vorgenommen, die nicht ordnungsgemäß in db migriert wurden. Mit dem Befehl

manage.py makemigrations 

fixiert mein Problem. Ich hoffe, das wird jemandem helfen.

1

Ich hatte ähnliches Problem für das Admin-Management. Führen Sie nach mehreren Überprüfungen "python manage.py migrate" aus, ohne den Namen von APP zuzuweisen ("Apply all migrations: .....), dann runserver und up im Web. Es hat funktioniert. Ich hoffe, dies könnte helfen.

2

in Code Änderungen vorgenommen After, die folgenden Befehle

manage.py makemigrations 
manage.py migrate 

es für mich gearbeitet.

+0

Das funktionierte auch für mich ... Obwohl ich keine Modelle in meiner App hatte, sollten wir diese Befehle trotzdem ausführen. –

2

Sie unangewendet Migrationen haben. Ihre Anwendung möglicherweise nicht ordnungsgemäß funktionieren, bis sie angewendet werden. Run ‚python verwalten. "migrieren", um sie anzuwenden. python manage.py migrieren Das hat bei mir funktioniert.

+0

Du hast mir so viele Kopfschmerzen erspart! Vielen Dank! – Mallika

1

syncdb ist veraltet Versuch python manage.py makemigrations und python manage.py migrate das Problem gelöst, und donot vergessen die App-Name die installierte App in settings.py

-1

Run ist dieser Befehl in cmd hinzuzufügen:

Python ./manage.py migrate --all 

Es sollte kommen auf Ihre db

+0

Haben Sie entweder Python am Anfang oder ./ am Anfang. Nicht beide. – Vikas

0

laufen diese in Befehls-Shell:

python manage.py migrate 

Dies ist für mich behoben.

0

Ich hatte dieses Problem in einem anderen Szenario. Ich bin neu in Django und habe ein Repository von GitHub geklont, um darauf zu üben. Die Datei db.sqlite3 wurde ebenfalls kopiert. Aber es gab keine django_session darin. Als ich tat

./manage.py showmigrations 

.. Ich fand heraus, dass es einige Migrationen gab. Aber die Tische fehlten in sqlite, da ich nie migrieren lief. Mein Problem wurde gelöst, als ich den Migrationsbefehl ausführte. Hoffe, das hilft Django-Neulingen wie mir.

./manage.py migrate 
0

hinzufügen 'django.contrib.sessions', Linie in INSTALLED_APPS

Run unter Befehle von django Shell

python manage.py makemigrations #check for changes 
python manage.py migrate #apply changes in DbSQLite 
python manage.py syncdb #sync with database 

django_session in Datenbank mit (session_key, session_data , expire_date)

0

In meinem Fall erscheinen wird, hatte ich die "löschen Session-Eintrag in der django_migrations-Tabelle und führen Makemigrationen aus und migrieren danach. Das hat die django_session-Tabelle erstellt.

Verwandte Themen