Django: нет такой таблицы: django_session - PullRequest
38 голосов
/ 03 сентября 2010

Я нашел несколько тем с этим названием, но ни одно из их решений не помогло мне. У меня есть два сайта Django, запущенные на моем сервере, оба через Apache, использующие разные виртуальные хосты на двух портах, питаемых моим внешним интерфейсом Nginx (для статических файлов). Один сайт использует MySql и работает просто отлично. Другой использует Sqlite3 и получает ошибку в заголовке.

Я скачал копию sqlite.exe и посмотрел на файл mysite.sqlite3 (база данных SQLite в этом каталоге), и там действительно есть таблица django_session с допустимыми данными в ней. У меня есть sqlite.exe в моей системе 32, а также папка site-packages в моем пути Python.

Вот раздел моего файла settings.py:

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.
    }
}

Я использовал python manage.py syncdb без ошибок и просто комментарий «Без фикстур».

У кого-нибудь есть идеи, что еще может здесь происходить? Я подумываю просто перенести все на моего старого приятеля MySql и просто игнорировать Sqlite, так как на самом деле это всегда доставляло мне какие-то проблемы. Я все равно использовал это только для того, чтобы знать это. У меня нет непреодолимой причины, почему я должен это использовать. Но опять же, только для моего назидания кто-нибудь знает, в чем проблема? Я не люблю сдаваться.

Ответы [ 24 ]

47 голосов
/ 03 сентября 2010

Возможно, сервер использует рабочий каталог, отличный от команды manage.py. Поскольку вы указываете относительный путь к базе данных sqlite, она создается в рабочем каталоге. Попробуйте с абсолютным путем, например ::1002

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

Помните, что вам нужно либо снова запустить ./manage.py syncdb, либо скопировать свою текущую базу данных с существующими таблицами в /tmp.

Если это устраняет сообщение об ошибке, вы можете найти лучшее место, чем /tmp: -)

14 голосов
/ 03 мая 2011

В случае, если это поможет кому-то еще: проблема для меня заключалась в том, что у меня не было комментария django.contrib.sessions в моем INSTALLED_APPS.Раскомментировав его и перезапустив syncdb добился цели.

13 голосов
/ 20 мая 2016

После внесения каких-либо изменений в код, выполните следующие команды

manage.py makemigrations
manage.py migrate

у меня это сработало.

12 голосов
/ 13 декабря 2012

В моем случае проблема заключалась в том, что я забыл запустить manage.py syncdb после того, как внес некоторые изменения. Когда я это сделал, проблема была решена.

8 голосов
/ 20 сентября 2011

Когда я запускаю "manage.py runserver". Если я запускаю, когда моего текущего пути нет в директории проекта (например, python /somefolder/somefolder2/currentprj/manage.py runserver), я получу такую ​​же проблему, как вы. решить с помощью cd каталог проекта перед выполнением команды.

7 голосов
/ 19 марта 2017

запустите это в командной оболочке:

python manage.py migrate

Это исправлено для меня.

5 голосов
/ 31 марта 2012

Еще одна возможная причина может быть вызвана использованием:

./manage.py testserver

И затем посещением интерфейса администратора.Это не сработает, потому что testserver создает совершенно отдельную базу данных в памяти.Если вы хотите посетить интерфейс администратора, вам нужно использовать runserver.

2 голосов
/ 21 января 2013
У

была та же проблема, я решил просто добавить django.contrib.comments в INSTALLED_APPS и снова запустить ./manage.py syncdb.

2 голосов
/ 30 августа 2016

У вас есть непримененные миграции.Ваше приложение может работать некорректно, пока они не будут применены.Запустите «python manage.py migrate», чтобы применить их.python manage.py migrate Этот работает для меня.

1 голос
/ 13 ноября 2016

syncdb устарел, попробуйте python manage.py makemigrations и python manage.py migrate решили проблему, и не забудьте добавить имя приложения, установленное приложение в settings.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...