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 ]

1 голос
/ 07 февраля 2013

создайте схему и добавьте ее имя в поле ИМЯ в «Базы данных». запустите manage.py syncdb

1 голос
/ 11 ноября 2013

Может это не путь дБ. Просто добавьте это в ваши settings.py:

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'),
1 голос
/ 01 марта 2016

У меня была похожая проблема для административного управления. После нескольких проверок запустите "python manage.py migrate", не назначая имени приложения (get "Apply all migrations: .....), затем запустите сервер и работайте в Интернете. Это сработало. Надеюсь, это может помочь.

1 голос
/ 12 мая 2015

Я внес некоторые изменения в модель, которая не была должным образом перенесена в БД.Использование команды

manage.py makemigrations

устранило мою проблему.Надеюсь, это кому-нибудь поможет.

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

Это сработало для меня.

С https://docs.djangoproject.com/en/2.2/topics/http/sessions/

Использование сеансов с поддержкой базы данных -

Если вы хотите использовать сеанс с поддержкой базы данных, вам необходимодобавьте 'django.contrib.sessions' в настройку INSTALLED_APPS.

После настройки установки запустите manage.py migrate , чтобы установить единую таблицу базы данных, в которой хранятся данные сеанса.

0 голосов
/ 09 марта 2019

Если вы устали от использования makemigrations и migrate, но ошибка такая же, нет такой таблицы django_session.Тогда просто взгляните на свой код где-то или на другой, который вы используете сессию или вызываете его.Просто закомментируйте код, в котором вы используете сессию, а затем выполните команду makemigrations и migrate соответственно.Это на 100% решает вашу проблему. Причиной этой ошибки является то, что вы удалили папку миграции и файл базы данных, по которой вы получаете эту ошибку. Не стесняйтесь спрашивать, если проблема не решена

0 голосов
/ 09 декабря 2018

И это может быть случай, когда вы получаете эту ошибку, потому что вы забыли запустить запрос python manage.py migrate перед созданием суперпользователя

0 голосов
/ 24 августа 2018

У меня была такая же проблема, поэтому я запустил

heroku run ls

и обнаружил, что файл db.sqlite3 отсутствует на сервере.В моем случае это произошло потому, что я исключил его, добавив в файл .gitignore.

0 голосов
/ 20 июля 2018

Для меня это было то, что я обновил settings.py, запустил миграции, но процесс systemd все еще использовал SQLite, потому что я не перезагружал его.Выполнение systemctl restart service_name решило проблему.

0 голосов
/ 11 марта 2018

В моем случае мне пришлось стереть запись 'session' в таблице django_migrations, запустить makemigrations и выполнить миграцию впоследствии. Это создало таблицу django_session.

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