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 ]

0 голосов
/ 07 октября 2017

Добавить 'django.contrib.sessions', строку в INSTALLED_APPS

Выполнить команды ниже из оболочки django

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

django_session появится в базе данных с (session_key, session_data , expire_date)

0 голосов
/ 20 мая 2017

У меня была эта проблема в другом сценарии. Я новичок в Django и клонировал репозиторий из github для практики на нем. Файл db.sqlite3 также был скопирован. Но в этом не было никакой django_session. Когда я сделал

./manage.py showmigrations

.. Я узнал, что были некоторые миграции. Но таблицы в sqlite отсутствовали, так как я никогда не запускал миграцию. Моя проблема была решена, когда я запустил команду переноса. Надеюсь, это поможет новичкам в Django, таким как я.

./manage.py migrate
0 голосов
/ 11 марта 2017

Запустите эту команду в cmd:

Python ./manage.py migrate --all

Она должна появиться на вашем db

0 голосов
/ 19 декабря 2014

Была эта проблема тоже. Перезапуск postgres и apache2 сделал это для меня. Заставляет меня задуматься, остался ли какой-нибудь sqlite-процесс, который не был удален, пока вы не поиграли с файлами или чем-то еще.

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