Django: no such table: django_session
DjangoDjango Problem Overview
I have found several topics with this title, but none of their solutions worked for me. I have two Django sites running on my server, both through Apache using different virtualhosts on two ports fed by my Nginx frontend (using for static files). One site uses MySql and runs just fine. The other uses Sqlite3 and gets the error in the title.
I downloaded a copy of sqlite.exe and looked at the mysite.sqlite3 (SQLite database in this directory) file and there is indeed a django_session table with valid data in it. I have the sqlite.exe in my system32 as well as the site-packages folder in my Python path.
Here is a section of my settings.py file:
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.
}
}
I did use the python manage.py syncdb with no errors and just a "No Fixtures" comment.
Does anyone have any ideas what else might be going on here? I'm considering just transferring everything over to my old pal MySql and just ignoring Sqlite, as really it's always given me some kind of trouble. I was only using it for the benefit of knowing it anyway. I have no overwhelming reason why I should use it. But again, just for my edification does anyone know what this problem is? I don't like to give up.
Django Solutions
Solution 1 - Django
It could be that the server uses a different working directory than the manage.py
command. Since you provide a relative path to the sqlite database, it is created in the working directory. Try it with an absolute path, e.g.:
'NAME': '/tmp/mysite.sqlite3',
Remember that you have to either run ./manage.py syncdb
again or copy your current database with the existing tables to /tmp
.
If it resolves the error message, you can look for a better place than /tmp
:-)
Solution 2 - Django
After made any changes in code, run the following commands
manage.py makemigrations
manage.py migrate
it worked for me.
Solution 3 - Django
run this in command shell:
python manage.py migrate
This fixed for me.
Solution 4 - Django
In case it helps anyone else: the problem for me was that I didn't have the django.contrib.sessions
app uncommented in my INSTALLED_APPS
. Uncommenting it, and rerunning a syncdb
did the trick.
Solution 5 - Django
In my case the problem was that I forgot to run manage.py syncdb
after I made some changes. When I did that the problem was solved.
Solution 6 - Django
When I run "manage.py runserver". If I run when I my current path is not in project dir.(such as python /somefolder/somefolder2/currentprj/manage.py runserver) I'll got the problem like you. solve by cd to project directory before run command.
Solution 7 - Django
One other possible cause can come from using:
./manage.py testserver
And then visiting the admin interface. This won't work because testserver creates a completely separate database in memory. If you want to visit the admin interface you need to use runserver.
Solution 8 - Django
This can happen if there are pending session migrations. > You have 17 unapplied migration(s). Your project may not work properly > until you apply the migrations for app(s): admin, auth, contenttypes, > sessions.
You can use the following command to run the migrations:
python manage.py migrate
This will fix the issue.
Solution 9 - Django
It happens may be beacause of undone migrations
• Executes following commands:
python manage.py showmigrations
python manage.py migrate --fake your_app_name zero
python manage.py showmigrations
• IF you are running on local machine, then remove file named 0001.init.py from migrations folder in your app
• Executes following commands:
python manage.py makemigrations
python manage.py migrate
• then run django server:
python manage.py runserver
Solution 10 - Django
had the same issue, my resolution was to simply add 'django.contrib.comments' to INSTALLED_APPS and run ./manage.py syncdb
again.
Solution 11 - Django
I had similar problem for admin management. After several checks, run "python manage.py migrate" without assign APP's name (get "Apply all migrations: .....), then runserver and up on the web. It worked. I hope this could help.
Solution 12 - Django
You have unapplied migrations. your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them. python manage.py migrate This one worked for me.
Solution 13 - Django
create a schema and add its name under NAME in 'databases' run manage.py syncdb
Solution 14 - Django
Maybe it is not getting the path of db. Just add this to your 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'),
Solution 15 - Django
I had made some changes in Model which was not migrated to db properly. Using the command
manage.py makemigrations
fixed my problem. I hope this will help someone.
Solution 16 - Django
syncdb
is obsolete try python manage.py makemigrations
and python manage.py migrate
solved the problem ,and donot forget to add the app name is the installed app in settings.py
Solution 17 - Django
I had the same problem so I ran
heroku run ls
and found that the db.sqlite3
file was missing from the server.
In my case, it was because I exempted it by adding it in .gitignore
file.
Solution 18 - Django
Maybe you have some unmigrated files.
Run
Python manage.py makemigrations appname
python manage.py migrate appname
python manage.py runserver
But if the error still continue The run python manage.py migrate The run server
Solution 19 - Django
Had this problem too. Restarting postgres and apache2 did it for me. Makes me wonder if there was some kind of sqlite process left over which wasn't removed until you fiddled with the files or something.
Solution 20 - Django
I had this issue in a different scenario. I am new to Django and cloned a repository from github to practice on it. The file db.sqlite3 was also copied. But there was no django_session in it. When I did
./manage.py showmigrations
.. I found out that there were some migrations. But the tables were missing in sqlite, as I never ran migrate. My issue was resolved when I ran the migrate command. Hope this helps django newbies like me.
./manage.py migrate
Solution 21 - Django
Add 'django.contrib.sessions',
line in INSTALLED_APPS
Run below commands from 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 will appear in database with (session_key, session_data , expire_date)
Solution 22 - Django
In my case, I had to erase the 'sessions' entry in the django_migrations table and run makemigrations and migrate afterwards. That created the django_session table.
Solution 23 - Django
For me, it was that I updated settings.py
, ran the migrations, but the systemd process was still using SQLite
because I did not reload it. Doing systemctl restart service_name
solved the problem.
Solution 24 - Django
And it may be a case you are getting this error because you forget to run query python manage.py migrate before creating super user
Solution 25 - Django
If you are tired of using makemigrations and migrate but the error is same no such table django_session. Then just have a look to you code somewhere or the other you using session or calling it. Just comment the code where you are using session and then run the command makemigrations and migrate respectively. It 100% solve your issue.The cause of this error is that you deleted your migrations folder and database file that is the reason you are getting this error.Feel free to ask if problem is not solve
Solution 26 - Django
This worked for me.
From https://docs.djangoproject.com/en/2.2/topics/http/sessions/
Using database-backed sessions -
If you want to use a database-backed session, you need to add 'django.contrib.sessions' to your INSTALLED_APPS setting.
Once you have configured your installation, run manage.py migrate to install the single database table that stores session data.
Solution 27 - Django
Please try the following command when you change on your code
manage.py makemigrations
manage.py migrate
Solution 28 - Django
Simply run this commands
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
Solution 29 - Django
it's simple just run the following command
python ./manage.py migrate
python ./manage.py makemigrations AppName
Solution 30 - Django
I found that's it all about migratinge.
python manage.py makemigrations APPNAME
As the answer ticked brakes when changed to a different virtual host such as windows to linux and vice versa
Solution 31 - Django
run the command in the terminal or cmd prompt
python manage.py runserver
and then
python manage.py createsuperuser
then create superuser by setting username and password then you will be able to see the admin login page.
Solution 32 - Django
In my case, the problem happened right after installing "Debug-toolbar" with empty models.py (with no classes), so the exact solution to my case is running those codes:
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
that is what I want to demonstrate for this annoying problem.
Solution 33 - Django
Django documentation says "Once you have configured your installation, run manage.py migrate to install the single database table that stores session data."
One possibility that i have come across is if the migration is ran for app first time before running migrations for the new project so just run migrations for the project
python manage.py makemigrations
python manage.py migrate
later you can run if needed
python manage.py makemigrations APPNAME
python manage.py migrate APPNAME
Solution 34 - Django
-
I deleted the existing migration files from folder with name 0001_initial.py
-
Then deleted the db.sqlite3 database and ran the below 4 commands and it worked.
python manage.py makemigrations python manage.py migrate python manage.py createsuperuser python manage.py runserver
Solution 35 - Django
Run this command in cmd :
Python ./manage.py migrate --all
It should come on your db