Подтвердить что ты не робот

Django: нет такой таблицы: django_session

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

Я загрузил копию sqlite.exe и посмотрел файл mysite.sqlite3 (база данных SQLite в этом каталоге), и действительно есть таблица django_session с действительными данными в ней. У меня есть sqlite.exe в моей системе32, а также папка сайтов-пакетов в моем пути 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, так как на самом деле это всегда вызывало у меня какие-то проблемы. Я использовал его только для того, чтобы знать его в любом случае. У меня нет подавляющей причины, почему я должен ее использовать. Но опять же, только для моего назидания кто-нибудь знает, что это за проблема? Я не люблю сдаваться.

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

manage.py makemigrations
manage.py migrate

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

python manage.py migrate

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

Ответ 6

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

Ответ 7

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

./manage.py testserver

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

Ответ 8

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

Ответ 9

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

Ответ 10

создать схему и добавить ее имя под NAME в 'databases' запустите manage.py syncdb

Ответ 11

Может, это не путь db. Просто добавьте это в свои 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'),

Ответ 12

Я внес некоторые изменения в Model, которые не были правильно перенесены в db. Используя команду

manage.py makemigrations

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

Ответ 13

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

Ответ 14

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

Ответ 15

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

Ответ 16

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

./manage.py showmigrations

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

./manage.py migrate

Ответ 17

Добавьте строку '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)

Ответ 18

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

Ответ 19

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

Ответ 20

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

heroku run ls

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

Ответ 21

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

Ответ 22

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

Ответ 23

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

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

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

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

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

Ответ 24

Это может произойти, если существуют перенесенные сеансы миграции.

У вас есть 17 не примененных миграций. Ваш проект может не работать должным образом пока вы не примените миграции для приложений: admin, auth, contenttypes, сессий.

Для запуска миграции вы можете использовать следующую команду:

python manage.py migrate

Это решит проблему.

Ответ 25

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

Python ./manage.py migrate --all

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